
Então, basicamente, quero adicionar essas duas linhas cmd juntas
ls *[Aa]*
ls *[Bb]*
Estou procurando um arquivo que contenha A e B (minúsculas ou maiúsculas) e que possam aparecer mais de uma vez.
Aqui está o que eu tentei:
ls *[Aa]*&&*[Bb]*
Responder1
Usando expansão de chaves
Um método é usar a expansão de chaves. Vamos considerar um diretório com estes arquivos:
$ ls
1a2a3 1a2b3 1b2A3 1b2b3
Para selecionar aqueles que possuem ambos a
e b
em ambos os casos:
$ ls *{[bB]*[aA],[aA]*[bB]}*
1a2b3 1b2A3
Melhoria
Um possível problema é como a expansão de chaves se comporta se uma das opções não tiver arquivos correspondentes. Considere um diretório com estes arquivos:
$ ls
1a2a3 1b2A3 1b2b3
Agora, vamos executar nosso comando:
$ ls *{[bB]*[aA],[aA]*[bB]}*
ls: cannot access '*[aA]*[bB]*': No such file or directory
1b2A3
Se não gostarmos dessa mensagem de aviso, podemos definir nullglob e ela desaparecerá:
$ shopt -s nullglob
$ ls *{[bB]*[aA],[aA]*[bB]}*
1b2A3
Porém, uma limitação dessa abordagem é que, se nenhum dos glob corresponder, ele ls
será executado sem argumentos e, conseqüentemente, listará todos os arquivos.
Usando globs estendidos
Vamos considerar novamente um diretório com estes arquivos:
$ ls
1a2a3 1a2b3 1b2A3 1b2b3
Agora vamos definir extglob
:
$ shopt -s extglob
E vamos usar um glob estendido para encontrar nossos arquivos:
$ ls *@([bB]*[aA]|[aA]*[bB])*
1a2b3 1b2A3
Responder2
Se você não se importa em pedir grep
ajuda então
ls *[aA]* | grep -i b
também servirá.