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.