Использование find для удаления всех подкаталогов (и их файлов)

Я уверен, что это прямо вперед и ответил где-то, но мне не удалось найти то, что я искал. В принципе, я пытаюсь запустить сценарий cron, чтобы очистить содержимое данного каталога каждые 7 дней. До сих пор я пробовал следующие,

find /myDir -mtime 7 -exec rm -rf {} ;

это, однако, также удаляет родительский каталог myDir, который я не хочу. Я тоже пытался,

find /myDir -type f -type d -mtime 7 -delete

, который, казалось, ничего не делать. Я тоже пытался,

fnd /myDir -type d -delete

который удалил все, кроме родительский каталог, как мне нужно. Однако появилось предупреждающее сообщение:

относительный путь потенциально небезопасен

Я был бы признателен, если кто-нибудь может исправить мой скрипт, чтобы он безопасно удалял все подкаталоги в папке.

большое спасибо. =)

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

find /myDir -mindepth 1 -mtime 7 -delete

основываясь на том, что я узнал от всех, кто ответил. Еще раз большое спасибо вам все.

3 ответов


попробуй:

find /myDir -mindepth 1 -mtime 7 -exec rm -rf {} \;

find /myDir -mindepth 1 -mtime 7 -delete

, вероятно, должен быть

find /myDir -mindepth 1 -mtime +7 -delete

(или mtime +6). The + означает вещи 7 дней или старше, а не ровно 7 дней.


насчет

cd myDir/ ; find . -type d -delete

предполагая, что вы запустите это из myDir родительский каталог.

Если вы не можете гарантировать, что myDir существует, то это безопаснее:

cd myDir/ && find . -type d -delete