![批量删除文件夹中除子文件夹外的旧文件](https://linux22.com/image/1579108/%E6%89%B9%E9%87%8F%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E9%99%A4%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E5%A4%96%E7%9A%84%E6%97%A7%E6%96%87%E4%BB%B6.png)
我想知道如何自动删除某个文件夹中的旧文件,但我希望它排除其子文件夹。我知道如何自动执行该过程,也知道如何删除包括子文件夹在内的旧文件:
find /path/to/files -mtime +30 -exec rm {} \;
为了实现自动化,我只需让它在启动时打开一次。
答案1
-maxdepth levels
下降到命令行参数之下最多levels
(非负整数)个目录级别。-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
,那么看看如何限制 POSIXfind
到特定深度。