Encontre todos os nomes de arquivos neste diretório que não contenham 'a' 'b' ou 'c' em seu nome [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    

Estou tentando encontrar todos os arquivos em meu diretório que não contenham as letras a, b ou c; Por que este comando não funciona?

ls *[!abc]*

exemplo: por exemplo: MATCH: xyz, dkh, file, foo; NÃO CORRESPONDE: bar, bxc, azi, csk

    
por amendeep singh 22.09.2018 / 20:59

1 resposta

0

Seu comando faz algo muito semelhante ao que você deseja: ele é expandido para a lista de nomes de arquivos não exatamente: a , b ou c . Se você testar, você verá:

$ touch a b c d
$ ls *[!abc]*
d

Mas se você criar outro arquivo e testar novamente:

$ touch argh
$ ls *[!abc]*
argh d

Para excluir nomes de arquivos que contenham esses caracteres em qualquer lugar, use:

$ shopt -s extglob
$ ls !(*[abc]*)
d

Outra maneira de fazer isso (novamente com globs estendidos) seria listar explicitamente os padrões:

$ ls !(*a*|*b*|*c*)
d
    
por 22.09.2018 / 21:26