特定の「検索」基準に一致するすべてのファイルの最初の行をどのように印刷できますか?

特定の「検索」基準に一致するすべてのファイルの最初の行をどのように印刷できますか?

.txt100バイトより長いすべてのファイルの最初の行を印刷したいです。これまでの基準を満たすファイルを収集しましたが、ファイルの最初のテキスト行を印刷する方法がわかりません。

find -size +100c -name "*.txt"

それとも私が完全に間違った道を行っているのでしょうか?

ベストアンサー1

head -n 1各ファイルに対して実行する必要があります。

find . -size +100c -name '*.txt' -execdir head -n 1 {} \;

またはfindサポートしていない場合-execdir

find . -size +100c -name '*.txt' -exec head -n 1 {} \;

あなたのheadバージョンがそれをサポートする-qか、単一の呼び出しで複数のファイルを処理するときに各ファイルに表示されるヘッダーを気にしない場合は、次のように2つのバリエーションを少し効率的にすることができます。

… -exec head -q -n 1 {} +

(望むより競争条件と-exec利点を理解してください-execdir。 )

おすすめ記事