список всех файлов с расширением .log за исключением одного

Я хотел бы перечислить все файлы с расширением .log за исключением файла backup.log .

Я попытался использовать эту команду:

 ls *.log -I "backup.log" 

Но все файлы журнала перечислены, даже backup.log !

Как я могу перечислить все файлы журнала, кроме backup.log ?

Оболочка расширяет подстановочный знак, поэтому ls получает backup.log как один из параметров.

Используйте расширенный шаблон (активированный shopt -s extglob ):

 ls !(backup).log 

Одна из возможностей:

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

т.е. найти все файлы в текущем каталоге или ниже, с точной глубиной 1 (так что действительно только в текущем каталоге, а не в имени самого текущего каталога) с именем, соответствующим шаблону *.log а не backup.log

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 

вы можете пропустить ключевое слово Backup из расширения оболочки, используя! (ключевое слово)

 ubuntu@vm-ubuntu:~$ ls *.log 1.log 2.log backup.log ubuntu@vm-ubuntu:~$ ls !(backup).log 1.log 2.log 

Как разобрать вывод ls через grep :

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