cat
ファイルの内容を表示するために使用するときにディレクトリまたはファイル名を表示するコマンドはありますか?
例:2つのファイルがあり、次の場所にあるとしf1.txt
ますf2.txt
。./tmp
./tmp/f1.txt
./tmp/f2.txt
その後、これを行うと、cat ./tmp/*.txt
ファイルの内容のみが表示されます。しかし、ファイル名を最初に表示してから内容を表示するには?たとえば、
(The needed command):
./tmp/f1.txt:
This is from f1.txt
and so on
./tmp/f2.txt:
This is from f2.txt ...
これを行うコマンドはありますか? (cat
ファイル名を表示するオプションはないようです。)
答え1
別のアイデアのように一度試してください。tail -n +1 ./tmp/*.txt
==> ./tmp/file1.txt <==
<contents of file1.txt>
==> ./tmp/file2.txt <==
<contents of file2.txt>
==> ./tmp/file3.txt <==
<contents of file3.txt>
答え2
$ for file in ./tmp/*.txt; do printf '%s\n' "$file"; cat "$file"; done
-または-
$ find ./tmp -maxdepth 1 -name "*.txt" -print -exec cat "{}" \;
答え3
正確に欲しいものではありませんが、できます。一行にプレフィックスファイル名:
$ grep '^' ./tmp/*.txt
./tmp/f1.txt: this is from f1.txt
./tmp/f1.txt: blaa, blaa, blaa...
./tmp/f1.txt: blaa, blaa, blaa...
./tmp/f2.txt: this is from f2.txt
./tmp/f2.txt: blaa, blaa, blaa...
./tmp/f2.txt: blaa, blaa, blaa...
いくつかのスクリプトを使用せずにこれより良い結果を得ることは困難です。
答え4
これを行うには、小さなスクリプトを簡単に作成できます。
for f in "$@" do; echo "This is from $f"; cat -- "$f"; done