为了账号安全,请及时绑定邮箱和手机立即绑定

如何排除查找中的目录。命令

如何排除查找中的目录。命令

Helenr 2019-06-26 14:57:56
如何排除查找中的目录。命令我在试着find命令,但是如何排除特定目录?这是find我们正在使用的代码。for file in $(find . -name '*.js')do    java -jar config/yuicompressor-2.4.2.jar --type js $file -o $filedone
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

使用-prune切换。例如,如果要排除misc目录只需添加一个-path ./misc -prune -o您的查找命令:

find . -path ./misc -prune -o -name '*.txt' -print

下面是一个包含多个目录的示例:

find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o -print

在这里我们不包括迪尔1迪尔2迪尔3,自从.find表达式-它是一种根据标准进行操作的动作。-path dir1 -o -path dir2 -o -path dir3(如果迪尔1迪尔2迪尔3)、type -d.

进一步的行动是-o print印出来就行了。


查看完整回答
反对 回复 2019-06-26
?
大话西游666

TA贡献1817条经验 获得超14个赞

如果-prune不适合你,这会:

find -name "*.js" -not -path "./directory/*"

警告:需要遍历所有不需要的目录。


查看完整回答
反对 回复 2019-06-26
?
FFIVE

TA贡献1797条经验 获得超6个赞

我发现,与其他建议的解决方案相比,下面的理由更容易解释:

find build -not \( -path build/external -prune \) -name \*.js# you can also exclude multiple pathsfind build -not \( -path build/external -prune \) -not \( -path build/blog -prune \) -name \*.js

重要说明:之后键入的路径-path必须完全匹配什么find在没有排除的情况下打印。如果这句话让您感到困惑,请确保使用完整的路径。整体命令如下:find/完整/路径/-not \( -path/完整/路径/排除/此-prune .....如果您想要更好的理解,请参见注[1]。

\(\)是将匹配的表达式。一点儿没错 build/external(见上文重要说明),并将在取得成功时,避免在下面横穿任何东西..然后将其分组为带有转义括号的单个表达式,并以-not这将使find跳过任何与该表达式匹配的内容。

有人可能会问,如果添加-not不会将所有其他文件隐藏在-prune重新出现,答案是否定的。路途-prune工作原理是,一旦到达,该目录下的文件就会被永久忽略。

这来自于一个实际的用例,在这里,我需要调用由Wintersmith生成的一些文件,但忽略了需要按原样发送的其他文件。


注[1]*如果你想排除/tmp/foo/bar然后你跑去找这样的“find /tmp \(...“那么您必须指定-path /tmp/foo/bar..另一方面,如果你跑了,就像这样cd /tmp; find . \(...那么您必须指定-path ./foo/bar.


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 474 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信