Это будет работать на Linux и Маках:
$ find . -name archive -type d -mtime -$X_DAYS -delete
Однако, мое предпочтение было бы первым запустить это:
$ find . -name archive -type d -mtime -$X_DAYS -ls | tee find.out
Это будет список файлов, которые вы думаете о удаляя и помещая их в файл с именем find.out
. Вы можете посмотреть результат и убедиться, что в нем нет ничего, что может вызвать проблемы. Возможно, есть архивный каталог старше 10 дней, но вы не хотите его удалять.
Вы можете отредактировать этот файл, чтобы удалить все, что хотите сохранить. Затем вы можете запустить следующую команду:
$ awk '{print "rm -rf " $NF}' find.out | tee command.out
Это создаст файл команд для удаления каталогов. Посмотрите на command.out
и если все в порядке, то сделать это:
$ ш command.out
Почему пройти через все это rigamarole?Потому что вы хотите убедиться, что вы удаляете то, что хотите удалить, а не то, что хотите сохранить. Лучше сделайте несколько дополнительных шагов и убедитесь, что все в порядке, если вы удаляете вещи.
Вы смотрели на метко названный 'find' еще? – Hasturkun
Уверены, но find не поддерживает подстановочный путь пути к каталогу. Например/path/*/archive/*. Поэтому я должен был бы объявить полный путь для каждого каталога архива в дереве, близкого к 100 и растущего. – clmccomas