É possível adicionar uma exceção com um “ls -l *”

0

É possível fazer por exemplo: ls -l * que imprime o conteúdo de todo um diretório. E adicione uma exceção, por exemplo, test.cpp Para imprimir todos os arquivos, exceto o test.cpp .

    
por kl94 06.02.2012 / 17:25

2 respostas

3

Você pode fazer isso com uma glob se tiver extglob ativado. Você pode ativá-lo com:

shopt -s extglob

E você pode usá-lo como:

ls -l !(test.cpp)

e pode ser usado de outras formas também:

ls -l !(*.jpg) # list all files that don't have .jpg extensions

Como este é um shell glob, ele também pode ser usado com outros comandos. Um efeito colateral, no entanto, é que faz com que todos os subdiretórios sejam listados explicitamente, o que significa que ls os listaria também. Mas isso pode ser facilmente resolvido com:

ls -ld !(test.cpp)
    
por 06.02.2012 / 17:54
2

A maneira clássica (ingênua?) de fazer isso seria

  ls -l * | grep -v test.cpp

No entanto, como Lamar comentou, o GNU ls tem opções para ignorar certos nomes de arquivos

  ls -l -I test.cpp *

Nota ls -l * lista os arquivos no diretório atual e arquivos nos subdiretórios de primeiro nível . Você pode ter significado ls -l sem o *

    
por 06.02.2012 / 17:48