listar todos os arquivos com extensão .log, exceto um

4

Gostaria de listar todos os arquivos com extensão .log , exceto o arquivo backup.log .

Eu tentei usar este comando:

ls *.log -I "backup.log"

Mas todos os arquivos de log estão listados, até backup.log !

Como eu poderia listar todos os arquivos de log, exceto backup.log ?

    
por Javier Cintrón 07.07.2015 / 16:45

5 respostas

7

O shell expande o curinga, portanto, ls obtém backup.log como um dos parâmetros.

Use um padrão estendido (ativado por shopt -s extglob ):

ls !(backup).log
    
por 07.07.2015 / 16:55
4

Uma possibilidade seria:

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

i.e. encontre todos os arquivos no diretório atual ou abaixo, com uma profundidade exata de 1 (portanto, apenas no diretório atual e não no nome do próprio diretório atual) com o nome correspondente ao padrão *.log e não backup.log

    
por 07.07.2015 / 16:55
1

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
    
por 07.07.2015 / 17:24
1

você pode pular a palavra-chave Backup da expansão de shell usando! (keyword)

ubuntu@vm-ubuntu:~$ ls *.log

1.log  2.log  backup.log

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

1.log  2.log
    
por 07.07.2015 / 22:57
-2

E quanto à análise da saída de ls a grep :

ls -l *.log | grep -v backup.log
    
por 07.07.2015 / 17:12

Tags