나는 평생 동안 이와 같은 명령을 입력해 왔습니다.
tail -f /var/log/syslog /var/log/mail.log /var/log/mail.err
어쩌면 아주 기본적인 질문일지도 모르지만 답을 찾는 데 어려움을 겪고 있습니다.
매번 위치를 다시 입력하지 않고도 폴더의 여러 파일을 일치시키는 정규식 방법이 있습니까?
이로 인해 몇 번의 키 입력이 절약되었지만 그다지 많지는 않았습니다.
export LOGDIR=/var/log
tail -f $LOGDIR/syslog $LOGDIR/mail.log $LOGDIR/mail.err
때로는 여러 위치를 원할 때가 있습니다...다음과 같은 것을 알아내고 싶습니다.
tail -f /var/log/(mail*|syslog|nginx/*)
(그러나 실제로는 그 목적을 달성합니다)
답변1
버팀대 확장을 사용하세요.
tail -f /var/log/{mail*,syslog,nginx/*}
예:
$ tree
├── mail.err
├── mail.log
├── nginx
│ ├── a
│ ├── b
│ └── c
├── notthis
└── syslog
$ echo {mail*,syslog,nginx/*}
mail.err mail.log syslog nginx/a nginx/b nginx/c
답변2
존재하다 bash
:
shopt -s extglob ## enable extend-glob if not enabled; default is "on"
tail -f /var/log/+(syslog|mail.+(log|err))
아니면 분명히:
tail -f /var/log/+(syslog|mail*)
이는 파일 이름 전역 일치이며 파일에만 적용되므로 파일 확장자를 기 대해서는 안됩니다.길당신이 말했듯 nginx/*
이 대신 중괄호 확장을 기반으로 한 솔루션과 답변을 사용하는 것을 선호할 수 있습니다.콰지모도또는 명령에 대한 또 다른 인수로 명시적으로 구분합니다.
tail -f /var/log/+(syslog|mail*) /var/log/nginx/*
답변3
"완료"(없음)에 도달할 때까지 실행이 tail -f file1 file2
계속됩니다 . 그러나 여러 파일이 동시에 처리됩니다. .file1
file2
multitail
sudo apt install multitail;man multitail