findコマンドで複数の名前条件を指定
何となく「codeなにがし」を見ていたところ、findコマンドを利用して複数の拡張しにマッチしたファイル一覧を取得する方法が書いてあった。
codeなにがし::linuxでテキストファイルだけをコピー
質問者は*.c *.cc *.h *.hhなどの拡張子を持つファイルの一覧を取得したいとのことで、このためには次のようにfindを実行すればよいそうな(一部省略)。
$ find . \( -name \*.c -o -name \*.cc -o -name \*.h -o -name \*.hh \) -print
「-name」オプションは検索対象のファイルの名前を指定するオプション。これをORを意味する「-o」オプションで複数つなげることで、複数の拡張子のどれか1つにマッチするファイルを見つけ出すことができる。ちなみに「-o」は「-or」とも書ける。
僕も以前似たようなことをしたことがあって、そのときはこの使い方を知らなかったので、次のようにfindコマンドを2回繰り替えし実行していた。
$ find . -name \*.c $ find . -name \*.h
結果は同じなんだけど、せっかくなので1コマンドで済ませたかったんだ。のどの奥につっかかっていた魚の骨がとれた気分。