我在使用使用查找下降到文件的递归脚本时遇到问题。我们已经开始将文件夹标记为 .old,如果它们已过时但暂时无法删除。我正在修改一个脚本,该脚本从树的顶部开始,并根据它们的名称下降到子目录。如何修改 find 命令以不下降到包含 .old 结尾的文件夹中?如果我在这个话题上,我怎么能告诉它只下降到包含 .old 结尾的文件夹中?
目前,该行如下所示:
josh=`find "${file}/." -name "*.joshfiles"`
谢谢Arik
递归查找不包括.old
目录和子目录的文件(假设"${file}"
引用目录并且"*.joshfiles"
是文件,而不是目录):
find "${file}/." -type f -name "*.joshfiles" -not -path "*.old/*"
或者仅包含.old
目录和子目录中的文件:
find "${file}/." -type f -name "*.joshfiles" -path "*.old/*"
如果"*.joshfiles"
是目录,那么您将需要以下内容:
find "${file}/." -type f -path "*.joshfiles/*" -not -path "*.old/*"
名为 .old 的目录:find / ( -type d -name *.old -prune ) -o -print
仅扩展名为 .old 的目录和目录内容:find / ( -type d -name *.old ) -o -path *.old/*
这些标志应该适用于GNU find和BSD find。