改行を強制するためにcatワイルドカード印刷を使用する

改行を強制するためにcatワイルドカード印刷を使用する

いくつかの小さなファイル(それぞれの文)を標準出力として印刷するために、bashのワイルドカードでcatを使用したいと思います。しかし、個々のファイルの内容は改行文字で区切られていないので、読みやすくなることを願っています。

このコマンドに一種のファイル区切り文字を追加するにはどうすればよいですか?

答え1

各ファイルの後に行末を印刷するシェル関数を定義し、代わりに使用しますcat

endlcat() {
  for file in "$@"; do
    cat -- "$file"
    echo
  done
}

それからそれを使うことができますendlcat *

などのワイルドカードを使用するときは、シェルからエスケープされたforすべての指定された引数()を繰り返します。ダッシュで始まるファイル名をブロックする必要はありません。最後に改行文字を出力します。$@*--echo

答え2

単純ではなくループを使用してくださいcat

for file in /path/to/targetdir/*; do
    echo "-------- $file -------"
    cat "$file" 
done

答え3

ファイル間でファイル名が必要な場合は、以下を使用してくださいtail

tail -n +1 ./*

(一部の実装では、tac必要に応じて同等の機能を選択することもできます。)cattail-rtac

答え4

〜のように@テデン答え、後でファイル名を確認したい場合は、次のコマンドを使用できますhead

$ head *file*
==> file_1 <==
file 1 content

==> file_2 <==
file 2 content

==> file_3 <==
file 3 content

headデフォルトは最初の10行なので、コマンドオプションなしで(ファイルごとに1文)使用してもかまいません。それ以外の場合は、この-n Xオプションが必要です。

関連情報