带有目录的 cat 文件

12 filenames cat

是否有命令在 cat 文件时显示目录/文件名?

例如:假设两个文件 f1.txt 和 f2.txt 在 ./tmp 下

./tmp/f1.txt
./tmp/f2.txt 
Run Code Online (Sandbox Code Playgroud)

然后当我做cat ./tmp/*.txt 时,只会显示文件的内容。但是如何首先显示文件名,然后显示内容?,例如:

 (The needed command):
 ./tmp/f1.txt:  
 This is from f1.txt
 and so on
 ./tmp/f1.txt:
 This is from f2.txt ...
Run Code Online (Sandbox Code Playgroud)

有命令可以执行吗?(“cat”似乎没有显示文件名的选项)

Ran*_*832 26

就像另一个想法一样,尝试 tail -n +1 ./tmp/*.txt

==> file1.txt <==
<contents of file1.txt>

==> file2.txt <==
<contents of file2.txt>

==> file3.txt <==
<contents of file3.txt>
Run Code Online (Sandbox Code Playgroud)

  • @mvorisek,至少使用 `tail` 的 GNU 实现,您可以使用 `-v` 选项。 (4认同)
  • 这很好,但是如果只有一个文件,如何显示文件名呢? (2认同)

kbu*_*ien 6

$ for file in ./tmp/*.txt; do echo "$file";  cat "$file"; done
Run Code Online (Sandbox Code Playgroud)

-或者-

$ find ./tmp -maxdepth 1 -name "*.txt" -print -exec cat "{}" \;
Run Code Online (Sandbox Code Playgroud)


Pau*_*l R 5

不完全符合您的要求,但您可以在每一行前面加上文件名前缀:

$ 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...
Run Code Online (Sandbox Code Playgroud)

如果不借助一些脚本,很难做得比这更好。

  • 这是一个很好的解决方法 - 我的文件实际上是单行。 (2认同)