在Mac OS X上查找的语法


6

我有一个项目目录,其中包含源代码和源代码的子目录。我想使用Unix程序find来递归搜索某些扩展名的文件名。findLinux和Mac OS X上的版本行为不同。

# Works in Linux
find . -type f -regex ".*\.\(py\|html\)$"

# Neither of these works in Mac OS X
find . -type f -regex ".*\.\(py\|html\)$"
find . -type f -regex ".*\.(py|html)$"

如何编写此命令,以便它可以在Mac OS X(希望也可以在Linux)上运行?


如果您告诉我们它们的行为方式有所不同,这将对您有所帮助。
Nifle

该命令应查找文件。在OS X上,同一命令找不到任何内容(零文件)。
hekevintran

Answers:


9

Mac OS X使用BSD 查找,而大多数Linux发行版都随GNU 查找一起提供。我相信您可以在Mac OS X上安装GNU findutils。我没有Mac的方便工具,但是我确定MacPorts中提供了该工具。

查看BSD查找手册页,我可能会做出一个疯狂的猜测,建议您尝试查看-E启用现代正则表达式库的选项。


1
从MacPorts获取findutils达到了目的。
hekevintran

还可以通过Homebrew获得Findutils。安装后的命令是gfind
Eric Hu

4

以下与BSD一起使用的软件可以在OS X上找到。

find -E . -type f -regex ".*\.(py|html)$"

find . -type f | grep -e ".*\.\(py\|html\)$"
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.