このコマンドの結果をご存知ですか?たくさん検索しましたが、役に立つ情報が見つかりませんでした。
find . -type f -exec grep -H PATH {} \;
事前にありがとう
ベストアンサー1
注文する
find . -type f -exec grep -H PATH {} \;
-type f
現在のディレクトリ()または次のディレクトリ().
ですべての一般的なファイルを探し、これらの各ファイルに対して実行grep -H PATH {}
時に {}
現在のディレクトリに基づくファイルのフルパス名を変更します。
このオプションは非標準ですが、頻繁に実装され、一致する各行の前にその行を含むファイルのパス名を付けます-H
。コマンドを次のように変更して、出力ファイルのパス名に常に一致する行を含めることができます(標準grep
では、コマンドラインに複数のファイルが提供されている場合にこれを行います)。grep PATH /dev/null {}
grep
grep
で使用されるパターンgrep
は文字列ですPATH
。
要約すると、このコマンドは、現在のディレクトリまたはwhere部分文字列を参照する次のディレクトリのすべての一般ファイルですべての行を検索して出力しますPATH
。各行には、その行を含むファイルのパス名が前に付けられます。
私の個人のホームディレクトリでこのコマンドを実行したときに得られた出力の一部:
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_NM:FILEPATH=/usr/bin/nm
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_SKIP_RPATH:BOOL=NO
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_STRIP:FILEPATH=/usr/bin/strip
grep
このコマンドは、ファイルごとに一度ではなく、一度にできるだけ多くのファイルを一括実行することで、より効率的にすることができます。
find . -type f -exec grep -F -e PATH /dev/null {} +
私はまた、文字列を次のように処理するためにここにいくつかのコマンドを自由にgrep
追加しました。-F
PATH
ひも正規表現ではないこの-e
オプションは、次の引数がパターンであることを示すためにのみ使用されます(たとえば、後でパターンをダッシュで始まるパターンに変更する場合に便利です)。
述語引数の末尾の から に変更すると、\;
各パス名に対してユーティリティを実行する代わりに、見つかったパス名がバッチとして収集されます。+
-exec