개행을 강제하기 위해 cat 와일드카드 인쇄 사용하기

개행을 강제하기 위해 cat 와일드카드 인쇄 사용하기

여러 개의 작은 파일(각각 문장)을 표준 출력으로 인쇄하기 위해 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원하는 경우 동등한 기능을 선택할 수도 있습니다 .)cattail-rtac

답변4

~처럼@테덴답변, 나중에 파일 이름을 확인하고 싶다면 다음 명령을 사용할 수 있습니다 head.

$ head *file*
==> file_1 <==
file 1 content

==> file_2 <==
file 2 content

==> file_3 <==
file 3 content

head기본값은 처음 10줄이므로 명령 옵션 없이(파일당 한 문장) 사용해도 괜찮습니다. 그렇지 않으면 이 -n X옵션 이 필요합니다 .

관련 정보