【发布时间】:2012-05-12 09:14:59
【问题描述】:
我正在尝试在文件系统中搜索 *.csv 文件。我正在浏览的某些目录中有符号链接,但我想忽略某些目录,因为它们会导致令人讨厌的长时间耗时循环。
find -L "location" -name "*.csv >> find_result.txt
我如何告诉 find 忽略某些目录,同时继续查看其他目录中的符号链接。
【问题讨论】:
我正在尝试在文件系统中搜索 *.csv 文件。我正在浏览的某些目录中有符号链接,但我想忽略某些目录,因为它们会导致令人讨厌的长时间耗时循环。
find -L "location" -name "*.csv >> find_result.txt
我如何告诉 find 忽略某些目录,同时继续查看其他目录中的符号链接。
【问题讨论】:
使用-prune 告诉find 不要进入给定目录。例如:
find -L location -name 'dontLookHere' -prune \
-o -name 'orThereEither' -prune \
-o -name '*.csv' -print
【讨论】:
-name 采用裸文件名;如果您想在特定的 pthanames 处进行修剪(例如“./ignore_dir”,但继续深入到任何其他恰好名为“ignore_dir”的目录),请改用-path。
find dir -wholename dirtoskip -prune -o [rest of your find command]
或
find dir \( -wholename dirtoskip -o -wholename another \) -prune -o [rest of your find command]
【讨论】:
-wholename 的可移植性不如-path,因为 find(1) 的更多版本支持后者而不是前者。 (虽然仍有旧版本不支持其中任何一个......)