Macでfind -type f | xargs grepと同じことができないか検証してみた
2020/01/19
masyus
Mac内でターミナル等を用いてカレントディレクトリ配下を文字列検索しようとした時のことです。Linuxでカレントディレクトリから特定のディレクトリ内を文字列検索する時に使っていました
find -type f | xargs grep XXXX
のコマンドがそのまま使えなかったため、「Macのfindでも同じことができないか?」と思い検証してみました。
Linuxのfind -type f | xargs grepの意味
Linuxにおけるfind -type f | xargs grep {文字列}のコマンド詳解 に書き起こしましたので、こちらを参照ください。
MacのfindコマンドとLinuxのfindコマンドの違い
Macに標準でインストールされているfindコマンドとLinuxで使えるfindコマンドの違いは、検索対象のパス指定が必須か否かです。Macのfindコマンドは検索対象のパス指定が必須となります。試しにMacで
find -type f | xargs grep XXXXX
を実行してみましょう。実行結果は下記です。
find: illegal option -- t
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
このように、実行することができません。正しくは下記のようにします。
find . -type f | xargs grep XXXXX
実行結果は下記です。
./hoge.txt:<a href="/">XXXXX</a>
カレントディレクトリを意味する.
か./
をつけることでLinuxのfindと同様の挙動になります。Linuxのfindでも、パスを.
か./
で指定すると同じ挙動になります。