在 Ubuntu 控制台上使用 FIND 命令排除具有路径模式的文件夹

在 Ubuntu 控制台上使用 FIND 命令排除具有路径模式的文件夹
PROJECTS
   |___ SITE1
   |      |____files (to exclude)
   |      |____img
   |      |____js
   |
   |___ SITE2
   |      |____files (to exclude)
   |      |____img
   |      |____js
   |
   |___ SITE3
          |____files (to exclude)
          |____img
          |____js

你好,我想搜索地点x 个文件夹(不包括以下内容)文件文件夹。

我尝试了这个但它显示文件的权限错误文件文件夹(因此似乎没有排除它们):

find . ! -path "*/files/*" -type f -name 'foo'

它显示(我在 PROJECTS 目录中):

./SITE1/img/foo.png
./SITE1/js/foo.js
find: `./SITE1/files/201501': Permission denied
find: `./SITE1/files/201412': Permission denied
find: `./SITE1/files/201501': Permission denied
... (the two firsts matches are pretty good, but I break the execution after, it print too many indesirble matches)

我受到了这个回复的启发问库本图

我也尝试了 -prune 选项,例如在这个例子中找不到解决方案……


我希望使用 egrep 进行与此搜索等效的操作,但针对的是文件名

egrep -Rns --exclude-dir=files 'foo' *

感谢您的帮助 !

答案1

OK完成 !

我不知道如何使用 prune 参数。这满足了我的需求

find * -path "*/files/*" -prune -o -name 'foo' -type f -print

更多解释这里


另一方面,我很好奇是否存在这样的语法(不是)像这样的论点AskUbuntu 上的示例如果有人有想法。

相关内容