使用find删除所有子目录(及其文件)

时间:2011-05-05 10:28:14

标签: bash recursion find subdirectory rm

我确信这是直截了当的并且在某个地方回答,但我找不到我想要的东西。基本上,我正在尝试运行一个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 个答案:

答案 0 :(得分:14)

尝试:

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

答案 1 :(得分:7)

怎么样?
cd myDir/ ; find . -type d -delete

假设您从myDir父目录运行它。

如果你不能保证myDir存在,那么这样更安全:

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

答案 2 :(得分:6)

find /myDir -mindepth 1 -mtime 7 -delete

应该是

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

(或者mtime +6)。 +表示7天或更长的东西,而不是7天。