Mac OS X 上 find 的语法

Mac OS X 上 find 的语法

我有一个包含源代码和源代码子目录的项目目录。我想使用 Unix 程序find递归搜索具有某些扩展名的文件的名称。Linuxfind和 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 上运行)?

答案1

Mac OS X 使用 BSD寻找大多数 Linux 发行版都带有 GNU寻找我相信你可以在 Mac OS X 上安装 GNU findutils。我手边没有 Mac,但我确信它可用麦金塔

查看 BSD 查找手册页,我可以做出大胆的猜测并建议您尝试查看-E启用现代正则表达式库的选项。

答案2

以下适用于在 OS X 上找到的 BSD。

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

find . -type f | grep -e ".*\.\(py\|html\)$"

相关内容