我在Linux(Ubuntu)上,在执行操作时,我想排除某些目录(例如.hg)
find | less
我尝试了以下操作以将.hg目录从列表中排除,但似乎不起作用。
find -type d \( ! -iname \.hg \)
find -type d \( ! -name \.hg \)
find -type d \( ! -iname .hg \)
如何排除.directory
在查找命令中
我在Linux(Ubuntu)上,在执行操作时,我想排除某些目录(例如.hg)
find | less
我尝试了以下操作以将.hg目录从列表中排除,但似乎不起作用。
find -type d \( ! -iname \.hg \)
find -type d \( ! -name \.hg \)
find -type d \( ! -iname .hg \)
如何排除.directory
在查找命令中
Answers:
在对类似find
解决方案的研究中,我发现了有关如何在sh中使用'find'的'-prune'选项的有用解释。由劳伦斯贡萨尔维斯(Laurence Gonsalves)。
您可以使用类似:
find . \( -type d -name .hg -prune \) -o \( -type f -name "foo" -print \)
或(无名称)
find . \( -type d -name .hg -prune \) -o \( -type f -print \)
的(转义)括号\(
和\)
组进行测试(type
和name
)和相应的操作(prune
和print
,分别地)在一起的左和右的OR( -o
)。
由于-o
优先级低于并列,因此您可以根据需要省略括号。许多find
实现还使您可以跳过final -print
。
find . -type d -name .hg -prune -o -type f -name "foo" -print
看看ack
:http : //betterthangrep.com/
除了拥有合理的默认排除文件夹集(例如,.hg是默认排除文件夹)之外,排除新文件夹也很容易:
ack --ignore-dir=.directory search_term
要将其带回到要查找文件列表的用例中,可以使用该-f
选项,如下所示:
ack -f --ignore-dir=.directory
我从编写复杂的搜索/查找命令切换为简单的ack命令。
提示:将常用的命令行选项(例如,排除的文件夹)放入.ackrc文件中。
find | less
问题中的内容,OP正在寻找文件的简单列表。这对您有什么帮助?
你可以试试
find \( ! -regex '.*/\.directory\(\|/.*\)' \)
.directory
-prune
第一组放在第一个括号内,而-type f -print
在第二组放在第二个括号内,只是为了使and和/或运算更明显,但对于我来说,这似乎很容易理解。