我正在尝试扫描备份驱动器并删除大约两年前的文件。但是,有一个文件夹我想跳过,因为那里存放着所需的旧文件。
这是我尝试使用的命令: find /mnt/backup/ -path '/mnt/backup/home/shares/Projects/Projects Archive' -prune -o -atime +731 -type f -delete *
我得到以下结果:
查找:-delete 操作会自动启用 -depth,但 -prune 在 -depth 生效时不执行任何操作。如果您仍想继续,只需明确使用 -depth 选项即可。
看来找到这个任务可能是死路一条,但我希望有人能对如何解决这个问题有所了解。
提前致谢。B
我不太了解
find
是否有更优雅的解决方案,但你可以做这样的事情:运行此命令
find
以查找旧文件,使用 删除修剪路径中的文件grep
,然后使用xargs
和rm -r
删除它们。这并不理想,因为根据 find 的深度与广度行为,它可能会递归删除文件夹,然后尝试删除该文件夹中已被删除的文件。我喜欢这种复合命令的样式,因为rm -r
您可以运行echo
, 来调试脚本并确保它在提交之前按预期运行,而不是运行命令。删除两年以上的文件时排除特定文件夹的不同方法
https://linuxconfig.org/how-to-explicitly-exclude-directory-from-find-command-s-search