我必须在bash中执行一个脚本作业,以删除比指定date更早的path中的所有目录,除了其中的一部分。 我知道不应该被删除的目录的名字…
你可以帮我吗???
我很抱歉,但我是一个初学者…
非常感谢!
这一定是我find的一天。
find /yourpath -mmin +60 -type d -not \( -name dirname1 -o -name dirname2 \) -print0 | xargs -0 rm -r
将查找并删除所有未超过60分钟的目录(相应地进行修改),这些命名不是dirname1或dirname2 。 您可以使用附加的-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来检查访问时间。