ls não faz correspondência de padrões nos nomes dos arquivos. Apenas lista o conteúdo dos diretórios e os arquivos que estão sendo fornecidos como argumentos.
Seu shell, por outro lado, tem um recurso chamado globbing ou geração de nome de arquivo que expande um padrão em uma lista de arquivos correspondentes a esse padrão.
Aqui, esse padrão glob seria abc*.zip ( * sendo um curinga que representa qualquer número de caracteres ).
Você passaria para qualquer comando que você gostasse, como printf para impressão:
printf '%s\n' abc*.zip
Você também pode passá-lo para ls -l para exibir os atributos desses arquivos:
ls -ld abc*.zip
(precisamos de -d , porque se algum desses arquivos for do tipo diretório , ls listará seu conteúdo de outra forma).
Ou para unzip extraí-los se apenas unzip puder extrair mais de um arquivo por vez. Infelizmente isso não acontece, então você precisaria usar xargs -n1 ou for loop:
printf '%sfor file in abc*.zip; do unzip "$file"; done
' abc*.zip | xargs -r0n1 unzip
Ou:
unzip 'abc*.zip'
Mas, na verdade, unzip é mais como uma porta de um comando do MS-DOS, unzip trataria seu argumento como glob. Em outras palavras, unzip 'abc*.zip' não descompactará o arquivo chamado abc*.zip (um nome de arquivo perfeitamente válido no Unix, não nos sistemas operacionais da Microsoft), mas os arquivos correspondentes ao padrão abc*.zip , então você realmente deseja: / p>
setopt extendedglob
ls -ld (#i)abc*.zip
(Na verdade, nossa abordagem xargs e for acima estaria errada, porque se houver um arquivo chamado abc*.zip , por exemplo, unzip o trataria como um padrão! Consulte bsdtar para um mais unixy maneira de extrair zip arquivos)
Para correspondência insensível a maiúsculas e minúsculas, você usaria [aA][bB][cC]*.[zZ][iI][pP] portably. Algumas shells estenderam os operadores de globbing para uma correspondência insensível a maiúsculas e minúsculas:
-
zsh:ls -ld ((#i)abc)*.zipOu:
ls -ld ~(i)abc*.zipse você quiser que a parte
abcseja insensível a maiúsculas e minúsculas. -
ksh93:ls -ld ~(i:abc)*.zipou:
shopt -s nocaseglob ls -ld abc*.zip -
com
bash.set +o case-glob ls -ld abc*.zip(não é possível ter apenas partes dos globs sensíveis a maiúsculas e minúsculas além da sintaxe portátil).
-
com
yash:printf '%s\n' abc*.zipmesma observação que para
bashacima.