¿Cómo listar los archivos basados ​​en hacer coincidir sólo una parte de su nombre de archivo?

Tengo muchos archivos en una carpeta por ejemplo

Kiran.txt Kiran1.txt Kiran221.txt Kiran144.txt Time.csv Timer.csv Timer2.csv Timer444.csv Timer266.csv Account.sh Account3.sh Account3333.sh Account3333.sh Account333333.sh 

Desde este directorio, quiero saber cómo puedo usar grep para mostrar archivos basados ​​en parte de su nombre de archivo – por ejemplo, aquellos que comienzan con "Cuenta" o los que terminan en ".sh".

Puedes find

 find -type f -name "Account*" 

Alternativa 2 (esto puede incluir también la carpeta)

 ls -1 Account* 

Alternativa 3 (grep, esto podría incluir la carpeta también)

 ls -1 | grep -E "^Account" 

Usar un comodín ( ¿Qué es este comodín? ):

 ls *.sh 

El * coincidirá con cualquier cosa antes del final .sh que desee. Utilice las otras opciones ls para mostrar, por ejemplo, -l para hacer una lista larga. Vea man ls para más información sobre lo que usted puede hacer con él.

Tenga en cuenta que ls también lista cualquier directorio que termina con .sh , no sólo archivos.


También puede utilizar find para superar este problema.

 find . -type f -maxdepth 1 -name "*.sh" 

Este comando sólo muestra los archivos "reales". Usar find es algo que recomiendo si quieres hacer algo con los archivos encontrados después. Puede hacer esto con la opción -exec .

Utilice el siguiente comando

  ls *.sh 

La solución estándar es un tubo:

 ls | grep ^Account 

Con algo tan simple como "Archivos que comienzan con la cuenta", globs también funcionaría:

 ls Account* 

Pero en general un grep es más potente y no corre el riesgo de desbordar la longitud máxima de la línea de comandos si su carpeta está realmente, realmente llena.

Intereting Posts