删除文件夹中不包含子文件夹的文件夹中的旧文件


1

我想知道如何自动删除某个文件夹中的旧文件,但我希望它排除其子文件夹。我知道如何自动执行该过程,也知道如何删除包含子文件夹的旧文件:

find /path/to/files -mtime +30 -exec rm {} \;

要实现自动化,只需在启动时将其打开即可。


以及如何添加更多文件夹进行搜索?只是复制粘贴同一行?我的意思是在同一脚本中,ofc。
阿扎里尔

怎么样:find /path/to/files/* -maxdepth 0 -type f -mtime +30 -exec rm {} \;
Pimp Juice IT

Answers:


2

man 1 find

-maxdepth levelslevels命令行参数下最多降序(非负整数)级目录。-maxdepth 0表示仅将测试和操作应用于命令行参数。

find /path/to/dir1 /path/to/dir2 /foo/bar/fileA -maxdepth 1 -type f -mtime +30 -exec rm {} +

笔记:

  • Sole rm适用于文件,而不适用于目录,因此您只希望删除文件-type f
  • -exec rm {} \;被替换为-exec rm {} +。考虑-delete(请参阅我的答案)。
  • 如果您find不支持,-maxdepth请参阅如何将POSIX限制find为特定深度
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.