하나를 제외하고 .log 확장자를 가진 모든 파일 나열

하나를 제외하고 .log 확장자를 가진 모든 파일 나열

.logfile 을 제외한 확장자를 가진 모든 파일을 나열하고 싶습니다 backup.log.

나는 다음 명령을 사용해 보았습니다.

ls *.log -I "backup.log"

그러나 모든 로그 파일이 나열됩니다. 심지어 backup.log!

을 제외한 모든 로그 파일을 어떻게 나열할 수 있습니까 backup.log?

답변1

쉘은 와일드카드 문자를 확장하여 인수 중 하나로 포함시킵니다 ls.backup.log

확장 모드를 사용하려면( 활성화하여 shopt -s extglob):

ls !(backup).log

답변2

한 가지 가능성은 다음과 같습니다.

 find . -maxdepth 1 -mindepth 1 -name \*.log -a -not -name backup.log

즉, 현재 디렉터리 또는 그 아래에서 정확한 깊이가 1인 모든 파일을 찾습니다(따라서 실제로는 현재 디렉터리 자체의 이름이 아니라 현재 디렉터리에서만) *.log.backup.log

답변3

TxR:

$ ls *.patch
install-tests.patch  match.patch  netbsd.patch  specials.patch  wlist.patch
$ txr -t '(glob "*.patch")'
install-tests.patch
match.patch
netbsd.patch
specials.patch
wlist.patch
$ txr -t '(set-diff (glob "*.patch") (glob "[mn]*.patch"))'
install-tests.patch
specials.patch
wlist.patch

답변4

ls다음을 통한 구문 분석 결과는 어떻습니까 grep?

ls -l *.log | grep -v backup.log

관련 정보