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

inf*_*fmz 18 bash recursion rm find subdirectory

我确信这是直截了当的并且在某个地方回答,但我找不到我想要的东西.基本上,我正在尝试运行一个cron脚本来每7天清除一个给定目录的内容.到目前为止,我尝试过以下方法,

find /myDir -mtime 7 -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

然而,这也删除了我不想要的父目录myDir.我也试过了,

find /myDir -type f -type d -mtime 7 -delete
Run Code Online (Sandbox Code Playgroud)

似乎什么都不做.我也试过了,

fnd /myDir -type d -delete
Run Code Online (Sandbox Code Playgroud)

除了父目录之外,我只需要删除所有内容.然而,一条警告信息出现了,

相对路径可能不安全

我很感激,如果有人可以纠正我的脚本,以便安全地删除文件夹中的所有子目录.

非常感谢.=)

更新: 我决定采取以下措施,

find /myDir -mindepth 1 -mtime 7 -delete
Run Code Online (Sandbox Code Playgroud)

基于我从所有回复的人那里学到的东西.再次,非常感谢大家.

lin*_*uts 14

尝试:

find /myDir -mindepth 1 -mtime 7 -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

  • 虽然在执行时我收到了一条消息,说"删除了每个文件/目录都没有这样的文件或目录".想知道这是否完全正常?非常感谢.mindepth开关非常有用,我甚至都不知道它存在! (2认同)

Mar*_*coS 7

关于什么

cd myDir/ ; find . -type d -delete
Run Code Online (Sandbox Code Playgroud)

假设您从myDir父目录运行此命令.

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

cd myDir/ && find . -type d -delete
Run Code Online (Sandbox Code Playgroud)


Bob*_*nia 6

find /myDir -mindepth 1 -mtime 7 -delete

应该是

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

(或许mtime +6).这+意味着7天或更长的东西而不是7天.