このコマンドの出力 Linux

このコマンドの出力 Linux

このコマンドの出力について誰かアイデアをお持ちですか、私はそれについてグーグルでたくさん検索しましたが、役に立つものは何も見つかりません

find . -type f -exec grep -H PATH {} \;

前もって感謝します

答え1

コマンド

find . -type f -exec grep -H PATH {} \;

-type f現在のディレクトリ ( ) 以下にあるすべての通常ファイル ( ) を検索し.、各ファイルに対して を 現在のディレクトリを基準としたファイルの完全パス名に置き換えてgrep -H PATH {}を 実行します。{}

オプション-Hgrep非標準ですがよく実装されており、一致する各行の先頭に、その行が見つかったファイルのパス名が付けられるようになります。代わりにコマンドを に変更して、一致する行を含むファイルのパス名を常に出力するようにgrep PATH /dev/null {}強制することもできます (標準では、コマンド ラインで少なくとも 2 つのファイルが指定されている場合にこれを行います)。grepgrep

で使用されるパターンはgrep文字列ですPATH

要約すると、このコマンドは、現在のディレクトリまたはその下にあるすべての通常ファイルから、任意の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コマンドは、各ファイルごとに 1 回実行するのではなく、一度にできるだけ多くのファイルに対してバッチで実行することで、より効率的に実行できます。

find . -type f -exec grep -F -e PATH /dev/null {} +

また、grepここではコマンドを少し変更して-F、文字列PATH正規表現としてではなく、-e次の引数がパターンであることを示すためにのみ使用されます (たとえば、パターンが後でダッシュで始まるものに変更される場合に便利です)。

述語の引数の末尾の から\;への変更により、見つかったパス名を、ユーティリティをそれぞれ実行するのではなく、バッチに収集するようになります。+-exec

関連情報