Respostas:
Use chaves para isso:
ls /opt/somedir/{aa,bb,cc}
Para obter mais informações, leia sobre expansão de chaves .
Em bash, execute shopt -s extglob
(ou coloque-o no seu ~/.bashrc
) e você pode usar padrões adicionais que fornecem expressões regulares com uma sintaxe incomum (herdada do ksh). Você também pode usar esses padrões no ksh, é claro, e também no zsh depois setopt ksh_glob
.
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
No zsh, você pode usar diretamente (foo|bar)
como padrão.
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Observe que o comando é chamado com o caminho completo. Se você deseja chamar o comando com um caminho curto, precisará alterar o diretório de alguma forma e (cd /opt/somedir && somecommand aa bb cc)
é de longe a maneira mais fácil.
Você pode filtrar usando egrep
:
ls | egrep '(aa|bb|cc)'
Para encontrar todos os arquivos de texto:
ls | egrep '(aa|bb|cc).txt'
Primeiro, eu o dirijo a: nunca analise sl , nunca . A maneira correta e canônica de fazer o que você quer é encontrar .
Por exemplo:
find /opt/somedir -regex '.*[aa|bb|cc].*' -exec mv '{}' ~/backup \;
Eu costumo usar em -name
vez de -regex
, pois é mais simples. Mas uma regex se adapta ao seu caso de uso. Você deve executar o comando sem -exec
a primeira vez, para garantir que eles sejam os arquivos que você deseja mover / excluir.