findコマンドを使用してサブフォルダのテキストファイルから行を抽出する

findコマンドを使用してサブフォルダのテキストファイルから行を抽出する

input.txtという名前の100個のサブフォルダのそれぞれにテキストファイルがありますsample_1, ..., sample_100

input.txt以下を使用して、すべてのファイルの最初の行を抽出できます。

find -name input.txt -exec awk 'FNR == 1 {print $0}' > out.txt {} \;

input.txtただし、これは現在のディレクトリ内のファイルのすべての最初の行を印刷しますout.txt

私が望むのは、各サブフォルダ内の対応する特定のサブフォルダout.txtの最初の行です。input.txtたとえば、out.txt内部sample_57サブフォルダの最初の行input.txtはですsample_57

これを達成する方法のアイデア。

ベストアンサー1

head代わりに使用してくださいawk。また、代わりに-execdir-exec実行したいコマンドを読みやすくします。

find -type f -name input.txt -execdir sh -c 'head -1 input.txt > out.txt' \;

おすすめ記事