删除指定date之前的所有文件夹,但其中一些文件夹除外

我必须在bash中执行一个脚本作业,以删除比指定date更早的path中的所有目录,除了其中的一部分。 我知道不应该被删除的目录的名字…

你可以帮我吗???

我很抱歉,但我是一个初学者…

非常感谢!

这一定是我find的一天。

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

将查找并删除所有未超过60分钟的目录(相应地进行修改),这些命名不是dirname1dirname2 。 您可以使用附加的-o name dirname部分来扩展此列表。 另外,我强烈build议用回声代替rm -r部分进行testing。

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

男人tmpwatch更多的信息。

我从来没有用自己的排除所以我不能提供的例子,但即时通讯相当肯定会工作。

对于GNU find

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

这将查找并删除比给定date更早的不匹配正则expression式的目录。 更改“foo”等,以匹配您的目录名称。 使用|分隔每个名字 。 完成testing后删除echo 。 检查修改时间,改为-newerat来检查访问时间。