짧은 답변

짧은 답변

아래와 같이 여러 파일을 한 번에 따라갈 때 각 줄의 시작 부분에 파일 이름을 표시하는 방법이 있습니까?

tail -f one.log two.log

전류 출력

==> one.log <==
contents of one.log here...
contents of one.log here...

==> two.log <==
contents of one.log here...
contents of two.log here..

비슷한 것을 찾고 있습니다.

one.log: contents of one.log here...
one.log: contents of one.log here...
two.log: contents of two.log here...
two.log: contents of two.log here...

답변1

짧은 답변

GNU 병렬이 작업을 쉽게 수행할 수 있는 훌륭한 옵션 세트가 있습니다.

parallel --tagstring "{}:" --line-buffer tail -f {} ::: one.log two.log

출력은 다음과 같습니다:

one.log: one.log의 내용은 여기에 있습니다...
one.log: one.log의 내용은 여기에 있습니다...
Two.log: two.log의 내용은 다음과 같습니다.
Two.log: two.log의 내용은 다음과 같습니다.

추가 설명

  • 이 옵션은 --tagstring=str각 출력 행을 문자열로 표시합니다.스테르. ~에서parallel 매뉴얼 페이지:
--태그스트링 문자열
                문자열로 줄을 표시하세요. 각 출력 라인 앞에는
                str 및 TAB(\t). str에는 {}와 같은 대체 문자열이 포함될 수 있습니다.

                -u, --onall 및 --nonall을 사용할 때 --tagstring은 무시됩니다.
  • 모든 항목은 {}병렬 인수로 대체됩니다. 이 경우 로그 파일 이름은 one.logtwo.log(뒤의 모든 인수 :::)입니다.

  • --line-buffer명령이 완료되면 명령의 출력(예: 또는 )이 인쇄되기 때문에 이 옵션이 필요합니다 . 파일이 커질 때까지 기다리게 되므로 출력을 한 줄씩 인쇄해야 합니다. 다시부터tail -f one.logtail -f two.logtail -f--line-bufferparallel 매뉴얼 페이지:

--line-buffer(알파 테스트)
                라인 기반 버퍼링된 출력. --group은 출력을 보존합니다
                모든 일을 함께 하세요. --ungroup은 출력 혼합을 허용합니다.
                라인의 절반은 직업에서 나오고, 라인의 절반은 직업에서 나옵니다.
                다른 직업. --line-buffer는 두 가지 모두에 적합합니다: GNU Parallel
                전체 줄을 인쇄하지만 혼합 줄을 허용합니다.
                다른 직업.

답변2

tail  -f ...your-files | 
    awk '/^==> / {a=substr($0, 5, length-8); next}
                 {print a":"$0}'

\감사합니다{don_cristti}

답변3

tail필수가 아닌 경우 grep다음을 사용하여 수행할 수 있습니다.

grep "" *.log

그러면 파일 이름이 각 출력 줄의 접두어로 인쇄됩니다.

*.log하나의 파일로만 확장하면 출력이 중단됩니다 . 이와 관련하여:

grep '' /dev/null *.log

답변4

내 생각은 누군가가 제안한 것처럼 여러 파일의 병합된 로그를 포함하는 단일 파일을 만드는 것입니다.여기파일 이름을 추가하십시오.

$ tail -f /var/log/syslog | sed -u -E 's,(^.+$),/var/log/syslog: \1,g' >> /tmp/LOG &&
$ tail -f /var/log/Xorg.0.log | sed -u -E 's,(^.+$),/var/log/Xorg.0.log: \1,g' >> /tmp/LOG &&
$ tail -f /tmp/LOG

관련 정보