Intereting Posts
Апачский запрос зависает за 2 минуты рекурсивно синхронизировать только определенные файлы из определенных подкаталогов с удаленного сервера Mutt send-hook для дезинфекции «на» адрес? CUPS не показывает мне принтеры, кроме как с храброго браузера Как быстро конвертировать .bin-файлы в .iso-файлы? Может ли сценарий bash сбросить и дезинфицировать * всю * среду и как? Как запустить раздел Windows из командной строки Grub, пожалуйста, помогите? Как добавить зависимости к элементу управления Debian и dsc-файлу и настроить параметры в файле правил, который зависит от соответствующего дистрибутива? Сетевая статистика по Linux apt-get: установить модифицированный пакет с зависимостями Должен ли я отключить учетную запись root на моем компьютере Debian для обеспечения безопасности? Разрешить пользователю доступ к домашнему каталогу другого пользователя почему мой рабочий стол по-прежнему действует так же, как Fedora 20, даже после перехода на Fedora 21? Хост-часть DHCPv6-назначенного адреса маршрутизатора Сообщение об ошибке возвращает ошибку при попытке подключения к пользователю на другой машине

Мне нужно проверить список каталогов, если он содержит каталог, новее, чем за 1 месяц до этого

Может быть, название довольно запутанно, поэтому я попытаюсь объяснить, что я сделал до сих пор.

Прежде всего, я создал список каталогов, которые я хочу исследовать, с помощью кода ниже:

$MDIR="/home/user/scripts/fcron" DIRS=`ls -l $MDIR | egrep '^d' | awk '{print $9}' | grep ^$ts-` 

Список DIRS теперь содержит имена каталогов формы:

 NETGEAR-2013-06-30 NETGEAR-2013-07-01 ........ NETGEAR-2013-05-05 

Теперь мне нужно проверить все эти каталоги ( содержащиеся в списке DIRS ), и мне нужно найти тот, который новее, чем за 1 месяц до этого (например, 27 или 29 дней). В случае, если я нахожу одно совпадение, мне нужно выйти из сценария.

В «псевдокоде» я бы написал:

 for dir is DIRS: if dir is newer than 30 days old: exit the script else: continue 

Моя трудность заключается в переводе только вышеперечисленного «псевдокода» в сценарий bash.

/////Последнее обновление/////

ОК, я обновил часть с псевдокодом следующим образом:

  for DIR is $DIRS; do if (( $(stat -c %Y "$dir") < $(date +%s) - 3600*24*30 )); then echo "exiting!!" exit else continue fi done 

Но теперь я получаю это:

  line 40: syntax error: unexpected word (expecting "do") 

Попробуйте сделать это:

 dirs='dir1 dir2 dir3' for dir is $dirs; do if (( $(stat -c %Y "$dir") < $(date +%s) - 3600*24*30 )); then exit else continue fi done 

Общий подход:

 find . -mindepth 1 -maxdepth 1 -type d \ -newermt "$(date --date="1 month ago 00:00" --rfc-3339=seconds)" 

Используя ваши DIRS :

 find $DIRS -maxdepth 0 -type d \ -newermt "$(date --date="1 month ago 00:00" --rfc-3339=seconds)"