cat
파일 내용을 표시하는 데 사용할 때 디렉터리나 파일 이름을 표시하는 명령이 있습니까?
예: 두 개의 파일이 있고 다음 위치에 있다고 가정 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