web-dev-qa-db-ja.com

Mac OSXで検索するための構文

ソースコードとソースコードのサブディレクトリを含むプロジェクトディレクトリがあります。 Unixプログラムfindを使用して、特定の拡張子のファイルの名前を再帰的に検索したいと思います。 LinuxとMacOSXのfindのバージョンは動作が異なります。

# 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でも)で実行できるようにこのコマンドを作成するにはどうすればよいですか?

6
hekevintran

Mac OSXはBSDを使用します find そしてほとんどのLinuxディストリビューションにはGNU find が付属しています。インストールできると思いますGNU Mac OS Xへのfindutils。Macは手元にありませんが、 MacPorts で利用可能だったと確信しています。

BSDのfindmanページを見ると、大げさな推測ができます。-Eオプションを見て、最新の正規表現ライブラリを有効にすることをお勧めします。

9
Zoredache

以下のBSDでの動作は、OSXで見つかります。

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

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