Найти неудаляемые файлы в папках через скрипт bash

Найти неудаляемые файлы в папках через скрипт bash

Я совсем новичок в bash-скриптинге и застрял на методе find из 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, то дата — 2014-11-25, а имя папки — 2014-11-20-daily_testmachineпапка, и ее содержимое следует удалить.

Что я делаю не так, что find не удаляет/не находит эти файлы и папки для удаления? Я не могу найти ошибку.

Примечание:если я выполню команду с точным строковым именем папки в ней, папка будет удалена. Значит, у меня что-то не так с форматом или именованием.

find $BACKUP_DIR -maxdepth 1 -name "2014-11-20-daily_testmachine" -exec rm -rf '{}' ';'

Чтобы было понятнее, я сделал скриншот, демонстрирующий настройку:

решение1

Моя ошибка была логической ошибкой с -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

Связанный контент