【发布时间】:2013-06-11 14:38:51
【问题描述】:
我一直在寻找一段时间,但似乎无法得到一个简洁的解决方案。我正在尝试删除旧文件,但不包括一些子目录(通过 parm 传递)及其子子目录。
我遇到的问题是,当 subdirectory_name 本身早于通知的持续时间(也通过 parm 传递)时,find 命令将 subdirectory_name 包含在查找列表中。实际上,remove 无法删除这些子目录,因为rm 命令的默认选项是f。
这里是脚本生成的查找命令:
find /directory/ \( -type f -name '*' -o -type d \
-name subdirectory1 -prune -o -type d -name directory3 \
-prune -o -type d -name subdirectory2 -prune -o \
-type d -name subdirectory3 -prune \) -mtime +60 \
-exec rm {} \; -print
这里是文件列表(以及 find 命令带来的子目录)
/directory/subdirectory1 ==> this is a subdreictory name and I'd like to not be included
/directory/subdirectory2 ==> this is a subdreictory name and I'd like to not be included
/directory/subdirectory3 ==> this is a subdreictory name and I'd like to not be included
/directory/subdirectory51/file51
/directory/file1 with spaces
除此之外——脚本工作正常,不带(排除)以下 3 个子目录下的文件:
subdirectory1、subdirectory2 和 subdirectory3。
谢谢。
【问题讨论】: