여러 개의 작은 파일(각각 문장)을 표준 출력으로 인쇄하기 위해 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
원하는 경우 동등한 기능을 선택할 수도 있습니다 .)cat
tail
-r
tac
답변4
~처럼@테덴답변, 나중에 파일 이름을 확인하고 싶다면 다음 명령을 사용할 수 있습니다 head
.
$ head *file*
==> file_1 <==
file 1 content
==> file_2 <==
file 2 content
==> file_3 <==
file 3 content
head
기본값은 처음 10줄이므로 명령 옵션 없이(파일당 한 문장) 사용해도 괜찮습니다. 그렇지 않으면 이 -n X
옵션 이 필요합니다 .