我正在使用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。