Я являюсь очень новым в сценариях удара, и я действительно застреваю на методе находки из Ubuntu. Я хочу искать в папке /opt/
чтобы все папки видели, старше ли они, чем определенная дата. Если они старше, файлы в этой папке должны быть удалены (и сама папка слишком на самом деле). Если дата является все еще слишком новой, файлы не должны быть затронуты.
Что я имею в коде:
find $BACKUP_DIR -maxdepth 1 -mtime +$DAYS_TO_KEEP -name "*$mystring" -exec rm -rf '{}' ';'
Переменные содержат эти значения:
BACKUP_DIR=/opt/
TESTDIR=2014-11-25-daily_testmachine
mystring=-daily_testmachine
Если переменная $DAYS_TO_KEEP
2, дата 25.11.2014, и имя папки 2014-11-20-daily_testmachine
папка и ее содержание должны быть отброшены.
Что я делаю неправильно, который находка не удаляет/находит эти файлы и папки для удаления? Я, может казаться, не нахожу ошибку.
Примечание: если я выполню команду с точным именем строки папки в нем, то папка будет удалена. Таким образом, у меня есть что-то не так в моем формате или именовании.
find $BACKUP_DIR -maxdepth 1 -name "2014-11-20-daily_testmachine" -exec rm -rf '{}' ';'
Для создания вещей более ясными, я сделал снимок экрана для показа установки:
Моя ошибка была логической ошибкой с -mtime
. Я думал, что мой сценарий проверял имена, но -mtime
проверки на дату, когда файл был создан. Так мой заключительный код:
DAYS_TO_KEEP=2
find $BACKUP_DIR -maxdepth 1 -mtime +"$DAYS_TO_KEEP" -exec rm -rf {} \;
я просто должен был сделать sudo touch -d "3 days ago" /filepath/folderToRemove
для создания -mname
, находят, что папка и удостоверяется, что файл был достаточно взрослым, чтобы быть удаленным. Таким образом, этот заключительный код удаляет все папки, которые являются более старыми, чем моя переменная $DAYS_TO_KEEP