删除指定日期之前的所有文件夹(部分文件夹除外)

删除指定日期之前的所有文件夹(部分文件夹除外)

我必须在 bash 中执行一个脚本作业来删除路径中除其中一些之外的所有早于指定日期的目录。我知道不应删除的目录的名称......

你能帮助我吗???

很抱歉,我还只是个初学者……

非常感谢!

答案1

这一定是我的发现日。

find /yourpath -mmin +60 -type d -not \( -name dirname1 -o -name dirname2 \) -print0 | xargs -0 rm -r

将查找并删除所有超过 60 分钟且未命名dirname1或的目录(相应调整) dirname2。您可以使用其他-o name dirname部分扩展此列表。此外,我强烈建议用rm -recho 替换该部分以进行测试。

答案2

尝试使用排除选项 -x 和 -X 的 tmpwatch

man tmpwatch 了解更多信息。

我自己从来没有使用过排除功能,所以我无法提供示例,但我很确定它会起作用。

答案3

对于 GNU find

find . ! -newermt 2010/10/01 -type d -regextype posix-egrep ! -regex '^.*/(foo|bar|baz)/?.*' -exec echo rm -rf {} +

这将查找并删除早于给定日期且与正则表达式不匹配的目录。更改“foo”等以匹配您的目录名称。使用 分隔每个名称|echo完成测试后,删除 。检查修改时间,更改为 以-newerat检查访问时间。

相关内容