ファイル内のすべてのファイルの最初の20行を表示する方法

ファイル内のすべてのファイルの最初の20行を表示する方法

私はこれを使って ".txt"ファイルのすべての名前を1つのファイルに入れます。

find . -name "*.txt" | sort > txtfile

txtfileにリストされているすべてのファイルの最初の20行をすべて表示する方法(または20行未満の場合は空白行を提供)は何ですか?

ベストアンサー1

ファイル名はファイル内の改行で区切られているため、txtfile各ファイルを読み取り、行数が同じか(または20より大きいか)を確認し、その場合は最初の20行を印刷し、そうでない場合は残りの行の改行を印刷できます。 :

while IFS= read -r f; do 
    lines=$(wc -l <"$f")
    if (( lines < 20 )); then
        cat -- "$f" 
        for ((i=20; i>lines; i--)); do 
            echo
        done
    else 
        head -20 -- "$f"
    fi
done <txtfile

おすすめ記事