查找具有某些扩展名的文件


Answers:


115

为什么不简单地使用这个:

find -name "*.xls" -o -name "*.csv"

您不需要正则表达式。

如果您绝对要使用正则表达式,只需使用

find -regex ".*\.\(xls\|csv\)"

8
比我的答案更好。+1。
Paul Tomblin

1
为什么在括号前需要反斜杠?我知道没有它是行不通的,但似乎应该如此。

1
因为默认情况下它们是emacs正则表达式。使用-regextype来更改它。

4
。只是为了记录:我永远remeber哪些工具要“\(”进行分组并希望“(”我总是要试一试就知道了。
约阿希姆·绍尔

1
正则表达式示例不起作用
主机管理员

12
find . \( -name  \*.xls -o -name \*.csv \) -print

不知道-o选项。谢谢!

1
需要括号吗?找 。'(' -name的* .xls -o -name *的.csv ')' -打印

@Adrian-不,不是。我不确定在非GNU查找上是否需要parens,而“ -print”还不是默认操作。
Paul Tomblin

5
好吧,GNU find(在ubuntu 11.04上默认是)可以在parens和-print下正常工作,或者在没有(parens和-print)下正常工作。但find . -name \*.xls -o -name \*.csv -print仅输出与.csv匹配的文件,
bbaja42

您说得对,我需要请原谅。
Paul Tomblin,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.