批量删除文件夹中除子文件夹外的旧文件

批量删除文件夹中除子文件夹外的旧文件

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

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

为了实现自动化,我只需让它在启动时打开一次。

答案1

man 1 find

-maxdepth levels 下降到命令行参数之下最多levels(非负整数)个目录级别。-maxdepth 0意味着仅将测试和操作应用于命令行参数。

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

笔记:

  • Solerm适用于文件,而不是目录,并且您只想删除文件,因此-type f
  • -exec rm {} \;被取代-exec rm {} +。考虑-delete(见我的这个答案)。
  • 如果你find不支持-maxdepth,那么看看如何限制 POSIXfind到特定深度

相关内容