Use isto:
ls -l /users/jenna/bio/*.{fas,pep}
Ou isto:
find /users/jenna/bio -iname '*.pep' -or -iname '*.fas'
Se eu quiser arquivos que terminem com .fas , sei que posso fazer o seguinte com o comando ls :
ls -l /users/jenna/bio/*.fas
e isso lista todos os arquivos terminados em .fas . Mas como posso obter arquivos que terminem com .fas ou .pep ?
ls -l /users/jenna/bio/(*.fas | *.pep) parece não funcionar? Eu sei que pode haver outros comandos que podem fazer isso, mas existe uma maneira de fazê-lo funcionar com ls ?
Obrigado por qualquer ajuda!
A coisa com maior probabilidade de trabalhar fora da caixa é expansão de chave . Funciona em bash, zsh e ksh.
ls -l /users/jenna/bio/*.{fas,pep}
(sem espaços em qualquer lugar ao redor das chaves.)
No bash e ksh, isso exibe um erro se uma das extensões não for correspondida, mas lista os arquivos correspondentes à outra extensão. A razão para isso é que a expansão de contraventamento não é um recurso de correspondência de caractere curinga, mas uma substituição de texto: *.{fas,pep} é convertido em *.fas *.pep antes de o shell começar a procurar arquivos que correspondam aos padrões. Em zsh, você receberá um erro e o comando não será executado, mas há uma maneira melhor: um “ou” glob pattern . Este não irá cometer erros a menos que nenhuma das extensões coincida.
ls -l /users/jenna/bio/*.(fas|pep)
Ou os padrões também estão disponíveis com uma sintaxe diferente : @(…|…) ; no bash, essa sintaxe precisa ser ativada com shopt -s extglob e, em zsh, essa sintaxe precisa ser ativada com setopt ksh_glob .
ls -l /users/jenna/bio/*.@(fas|pep)
(Alguns desses comportamentos podem ser configurados. Todas as minhas instruções se aplicam à configuração padrão dos shells, a menos que explicitamente especificado.)
Quando você deseja digitalizar recursivamente sem os erros irritantes normalmente obtidos de find ou ls (como: " Permissão negada ", " Não é um diretório ") que pode travar scripts ou xargs comandos, também o comando tree não foi mencionado em lugar algum aqui:
tree -fai / | grep -e ".fas$" -e ".pep$"
acima eu usei a raiz / , mas pode ser qualquer caminho:
tree -fai /users/jenna/bio/ | grep -e ".fas$" -e ".pep$""
BTW
Tags command-line directory ls files