"cat" 명령을 사용할 때 파일 이름과 내용 표시

"cat" 명령을 사용할 때 파일 이름과 내용 표시

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

관련 정보