排除部分“查找”结果

排除部分“查找”结果

我正在使用find命令和-exec something参数。我可以排除一些与正则表达式匹配的目录/名称吗(例如 rsync 的--exclude)?-prune如果我想排除很多东西,这样就足够了吗?

答案1

您可以在 Ubuntu 下使用 find 命令时排除某些目录。

您可以使用如下 find 命令来查找除 tmp 目录之外的所有目录:

find /path/to/dest -type d \( ! -name tmp \) -print

查找除 tmp 和 cache 之外的所有目录:

find /path/to/dest -type d \( ! -name tmp \) -o \( ! -name cache \) -print

-prune选项确保您不会进入目录:

find /path/to/dest -type d \( ! -name tmp \) -o \( ! -name cache -prune \) -print

您可以找到除 tmp 和根目录之外的所有 *.pl,输入:

find /  \( ! -name tmp \) -o \( ! -name root -prune \)  -name "*.pl" -print

取自:

http://www.cyberciti.biz/faq/linux-unix-osx-bsd-find-command-exclude-directories/

答案2

对于可行的解决方案(在 Ubuntu 12.04 上测试)。

find ! -path "*dir1*" -iname "*.mp3"

将在当前文件夹及其子文件夹中(dir1 子文件夹除外)搜索 mp3 文件。

find ! -path "*dir1*" ! -path "*dir2*" -iname "*.mp3"

排除 dir1 和 dir2。

相关内容