*.h
のように、マスクが定義されたフォルダ内のすべての*.cpp
、*/trunk/src*
ファイルを検索したい。したがって、*.h
ファイルと*.cpp
ファイルを別々に見つけることができます。
find . -path "*/trunk/src/*.h"
find . -path "*/trunk/src/*.cpp"
両方のタイプ(*.h
および*.cpp
)のファイルリストを取得する最良の方法は何ですか?
PSリストをgrep
にパイプしたいのですが。
「または」には-o
を使用できます。
find . -path '*/trunk/src/*.h' -o -path '*/trunk/src/*.cpp'
それは同じです
find . -path '*/trunk/src/*' \( -name '*.h' -o -name '*.cpp' \)
これらのファイルに対してgrepを実行する場合:
find . \( -path '*/trunk/src/*.h' -o -path '*/trunk/src/*.cpp' \) -exec grep PATTERN {} +
または
find . -path '*/trunk/src/*' \( -name '*.h' -o -name '*.cpp' \) -exec grep PATTERN {} +
Bashで globstar オプションをオンにして、**
が任意のレベルのサブディレクトリと一致するようにします。あなたの~/.bashrc
からこれを行うことができます。また、extglob
オプションをオンにして、ksh拡張パターンをアクティブにします。
shopt -s globstar extglob
次に:
grep PATTERN **/trunk/src/**/*.@(h|cpp)
4.2までのbashバージョンは、**
を使用すると、ディレクトリへのシンボリックリンクをたどることに注意してください。
Zshはこれを簡単にします。オプションを設定する必要はなく、入力するだけです。
grep PATTERN **/trunk/src/**/*.(h|cpp)
コマンドラインが長すぎて、Linuxまたは他のプラットフォームでGNU grepを使用している場合は、シェルの代わりにgrep
を再帰してコマンドラインに保存できます。長さ。
grep -R --include='*.cpp' --include='*.h' PATTERN **/trunk/src