gpt4 book ai didi

Linux Find命令-根据文件名排除查找

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:56 25 4
gpt4 key购买 nike

我觉得这是一个非常简单的问题,但我找不到一个简单的正则表达式答案。基本上,我正在尝试使用 find 来获取我系统中所有文件的列表,但有一些排除项。这些排除项之一是任何以 .Foo.cs 结尾的文件,或任何名为 FooInfo.cs 的文件。我已成功从搜索中排除了几个目录,但似乎无法排除这两个文件。我尝试过使用 -name,但 -name 是否适用于此?下面是我的表情。谢谢。

find . ! -name 'FooInfo.cs' ! -name '*.Foo.cs'  -type d \( -name Foo-o -name 2Foo -o -name 2_Foo \) -prune -o -type f ! -size 0 \( -name "*.java" -o -name "*.cs" -o -name "*.cpp" -o -name "*.cxx" -o -name "*.cc" -o -name "*.c" -o -name "*.h" -o -name "*.scala" -o -name "*.css" -o -name "*.html" -o -name "*.bat" -o -name "*.js" \) -exec realpath {} \;| xargs grep -L CUSTOMERINFO  | sed -e 's/$/\r/g' >> ../output.txt

最佳答案

所以我不确定为什么,但我最终通过更改我排除的内容的顺序来解决这个问题。而不是在一开始就排除,下面的工作(移动 ! -name '.FOO.cs'! -name '.fooinfo.cs' 到后面声明 type -f).

我假设这是可行的,因为它们是文件,因此必须使用 type -f 进行标记。但是,如果您知道原因,请在下面评论并更正。

find . -type d \( -name Foo-o -name 2Foo -o -name 2_Foo \) -prune -o -type f ! -size 0 ! -name 'FooInfo.cs' ! -name '*.Foo.cs'   \( -name "*.java" -o -name "*.cs" -o -name "*.cpp" -o -name "*.cxx" -o -name "*.cc" -o -name "*.c" -o -name "*.h" -o -name "*.scala" -o -name "*.css" -o -name "*.html" -o -name "*.bat" -o -name "*.js" \) -exec realpath {} \;| xargs grep -L CUSTOMERINFO  | sed -e 's/$/\r/g' >> ../output.txt

关于Linux Find命令-根据文件名排除查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54698135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com