複数のファイルの内容(ファイル名が先頭に付く)を出力するには?

複数のファイルの内容(ファイル名が先頭に付く)を出力するには?

私は次のコマンドを探しています

find -name "*clang*" -exec cat {} \;

または

cat $(find -name "*clang*")

しかし、各ファイルの内容の前にファイルパスを教えてください。

答え1

これは、実行ごとに1つのawkのみが生成されるという利点があります。

find . -type f -name '*clang*' -exec awk 'FNR==1{print FILENAME}1' {} +

awk本文の意味:

  • FNR==1{print FILENAME}:見つかった各ファイルの最初の行に対応するパスを印刷します。
  • 1:各行に印刷します。

答え2

次のコマンドを試してください。

find / -name "*clang*" -exec basename {} \; -exec cat {} \;

答え3

私はこれが実際に思ったより簡単であることがわかりました。

find -name "*clang*" -print -exec cat {} \;

関連情報