then=$( date -d '30 days ago' +%y%m%d )
for d in *; do
if [[ -d "$d" ]] && [[ "$d" =~ ^([0-9][0-9])([0-9][0-9])([0-9][0-9])$ ]]; then
datestring="${BASH_REMATCH[3]}${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
if [[ "$datestring" < "$then" ]]; then
echo rm -rf "$d"
fi
fi
done
Этот скрипт bash
сначала вычислит дату 30 дней назад с помощью GNU date
и сохранит ее в формате YYMMDD
в $then
.
Затем выполняется итерация по именам, найденным в текущем каталоге. Если какое-либо из найденных имен является каталогом, соответствующим заданному регулярному выражению, он выбирает части имени каталога и упорядочивает их в формате YYMMDD
в $datestring
.
Если $datestring
лексикографически меньше, чем $then
, то этот каталог следует удалить. echo
предотвращает это на самом деле, поэтому сначала запустите его несколько раз, чтобы убедиться, что он работает, прежде чем удалять его.
Тестирование:
$ mkdir {01..12}0117 # one directory for the 1st of every month this year
$ bash./script.sh
rm -rf 010117
rm -rf 020117
rm -rf 030117
rm -rf 040117
rm -rf 050117
rm -rf 060117
rm -rf 070117
rm -rf 080117
(сегодняшняя дата 170922
, а $then
имеет значение170823
)
Очевидно, что это не удастся для имен каталогов, содержащих даты прошлого века, (они не будут удалены ).
Обязательно правильно цитируйте свои аргументы. &
имеет особое значение в командах оболочки (запускает команду в фоновом режиме, поэтому вы получаете [1] [2] [3]
непреднамеренные фоновые задачи ), поэтому для URL-адресов, содержащих символ &
, он должен быть заключен в кавычки, иначе он будет быть неправильно понятым.
$ wget http://some?special&url¶meters # wrong
$ wget 'http://some?special&url¶meters' # correct
Что касается неправильного имени файла, wget
возобновляется правильно, даже если имя файла URL и локальные имена файлов не совпадают, например:
$ wget -O customname -c http://speed.hetzner.de/100MB.bin
--2019-12-13 21:01:41-- http://speed.hetzner.de/100MB.bin
Resolving speed.hetzner.de (speed.hetzner.de)... 88.198.248.254, 2a01:4f8:0:59ed::2
Connecting to speed.hetzner.de (speed.hetzner.de)|88.198.248.254|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 104857600 (100M), 54492347 (52M) remaining [application/octet-stream]
Saving to: ‘customname’
customname 67%[+++++++++===> ] 67.20M 1.74MB/s eta 20s
Таким образом, этот файл называется 100MB.bin
на веб-сервере, но сохраняется и возобновляется под customname
, и он работает.
Однако возобновление в целом является концепцией, которая должна поддерживаться веб-сервером. Если веб-сервер отказывается отправлять частичный контент, возможно, у вас нет другого выбора, кроме как заново -загрузить все с нуля.
Также я не совсем понимаю, как работают серверы загрузки Google. Если он каждый раз генерирует новую ссылку, есть вероятность, что это может быть не один и тот же файл. Некоторые места предлагают загрузку в виде заархивированного архива, который создается «на лету», поэтому каждый раз он меняется, и попытка возобновить вместо этого приведет к повреждению загрузки.
Если у вас где-то есть арендованный виртуальный сервер, вы также можете сначала загрузить его оттуда, а затем перенести на нестабильное домашнее соединение.