Respuestas:
lsno hace coincidencia de patrones en los nombres de archivo. Simplemente enumera el contenido de los directorios y los archivos que se le están dando como argumentos.
Su shell, por otro lado, tiene una característica llamada globalización o generación de nombre de archivo que expande un patrón en una lista de archivos que coinciden con ese patrón.
Aquí ese patrón global sería abc*.zip( *siendo un comodín que representa cualquier número de caracteres ).
Lo pasaría a cualquier comando que desee, como printfpara imprimir:
printf '%s\n' abc*.zip
También puede pasarlo ls -lpara mostrar los atributos de esos archivos:
ls -ld abc*.zip
(lo necesitamos -dporque si alguno de esos archivos es de tipo directorio , lsenumeraría su contenido de lo contrario).
O para unzipextraerlos si solo unzippudiera extraer más de un archivo a la vez. Desafortunadamente no lo hace, por lo que necesitaría usar xargs -n1o un forbucle:
printf '%s\0' abc*.zip | xargs -r0n1 unzip
O:
for file in abc*.zip; do unzip "$file"; done
Pero, de hecho, al unzipser más como un puerto de un comando de MS-DOS, en unzipsí mismo trataría su argumento como un problema. En otras palabras, unzip 'abc*.zip'no descomprimirá el archivo llamado abc*.zip(un nombre de archivo perfectamente válido en Unix, no en los sistemas operativos de Microsoft), sino los archivos que coinciden con el abc*.zippatrón, por lo que realmente querrá:
unzip 'abc*.zip'
(En realidad nuestra xargsy forenfoque anterior sería un error, porque si hay un archivo llamado abc*.zip, por ejemplo, unzipsería tratarlo como un patrón! Ver bsdtaruna manera más unixy para extraer ziplos archivos)
Para una coincidencia que no [aA][bB][cC]*.[zZ][iI][pP]distinga entre mayúsculas y minúsculas, usaría de forma portátil. Algunos proyectiles tienen operadores de globo extendido para la coincidencia entre mayúsculas y minúsculas:
zsh:
setopt extendedglob
ls -ld (#i)abc*.zip
O:
ls -ld ((#i)abc)*.zip
si solo desea que la abcparte no distinga entre mayúsculas y minúsculas.
ksh93:
ls -ld ~(i)abc*.zip
o:
ls -ld ~(i:abc)*.zip
con bash.
shopt -s nocaseglob
ls -ld abc*.zip
(no hay forma de tener solo partes de los globos sensibles a mayúsculas y minúsculas que no sea mediante el uso de la sintaxis portátil).
con yash:
set +o case-glob
ls -ld abc*.zip
mismo comentario que el bashanterior.
ls abc*.zip
Sin embargo, esto fallará si hay demasiados archivos (hay un límite para la expansión de shell en términos de cuántos argumentos puede expandirse).
find . -name "abc*.zip"
Este es probablemente el más universal. Las citas deben estar ahí. Con algunas findimplementaciones, también puede usar en -inamelugar de -nameuna búsqueda sin distinción entre mayúsculas y minúsculas ( aBc<date>.ZIPtambién coincidiría).
ls | grep -x "abc.*\.zip"
Tenga en cuenta que .*y \.dado que el filtro grep usa es regex, que es diferente de la notación comodín que el shell usa para la expansión. Uso grep -ipara búsqueda sin distinción entre mayúsculas y minúsculas
execve()llamada al sistema.
findtambién buscará esos archivos en subdirectorios. Use find . ! -name . -prune -name 'abc*.zip' -printo find . -maxdepth 1 -name 'abc*.zip'si sus findsoportes son -maxdepthsimilares a GNU o BSD o find . -depth 1 -name 'abc*.zip'si es findcompatible -depth <n>con algunos BSD para restringirlos al directorio actual.
$ ls ../*.afuncionó para mí (lista de archivos en directorio principal).
Debe especificar el directorio donde lsbuscará en un ejemplo
ls -la ~/file*.*
ls -la ./file*.*
funciona para mí, pero obviamente no admite la búsqueda por patrón
abcy terminar con .zip.
ls -1 | grep "abc$(your_date).zip"?