Solo quiero obtener los archivos del directorio actual y solo generar archivos .mp4 .mp3 .exe nada más. Entonces pensé que podría hacer esto:
ls | grep \.mp4$ | grep \.mp3$ | grep \.exe$
Pero no, ya que el primer grep generará solo mp4, por lo tanto, los otros 2 grep no se utilizarán.
¿Algunas ideas? PD: Ejecutar este script en Slow Leopard.

shopt -s nullgloby luego simplemente consulte*.exe *.mp3 *.mp4. Ver mywiki.wooledge.org/ParsingLsRespuestas:
Por qué no:
No estoy seguro de dónde lo aprendí, pero he estado usando esto.
fuente
ls: *.exe: No such file or directorypor ejemplo:ls *.{zip,tar.gz,tar} 2>/dev/nullUse expresiones regulares con
find:Si está canalizando los nombres de archivo:
Esto protege los nombres de archivos que contienen espacios o nuevas líneas.
OS X
findsolo admite alternancia cuando-Ese usa la opción (mejorada).fuente
find . -iregex '.*\(mp3\|mp4\|exe\)'mysupermp3.jpgconsidere agregar$al final de la expresión regular y\\.antes de las extensionesegrep- grep extendido - ayudará aquíDebería hacer el trabajo.
fuente
lsa un terminal (o con-Copción) produce una salida de varias columnas.lsa una tubería (o con-1) tiene salida de columna única. (Comparar salida delsconls | cat).la forma más fácil es usar ls
fuente
lsno tenga algún tipo de opción silenciosa.Por si acaso: ¿por qué no lo usas
find?fuente
find . -name '*.mkv' -o -name '*.flv'(agregando tantas cláusulas -o como sea necesario). Necesitaba el.para indicar el directorio y el indicador-nameno-iname, estoy en macOS 10.13.No hay necesidad de grep. Los comodines de Shell harán el truco.
Si has corrido
entonces los globos no coincidentes se eliminarán por completo y no se dejarán en la línea de comando sin expandir.
Si desea un globbing que no distinga entre mayúsculas y minúsculas (entonces * .mp3 coincidirá con foo.MP3):
fuente
-Ropción de enumerar archivos coincidentes en subdirectorios, pero la opción no parece tener ningún efecto y todavía solo obtengo los resultados del directorio actual.En caso de que todavía esté buscando una solución alternativa:
Siéntase libre de agregar más banderas -e si es necesario.
fuente
Para usuarios de OSX :
Si lo usa
ls *.{mp3,exe,mp4}, arrojará un error si una de esas extensiones no tiene resultados.El uso
ls *.(mp3|exe|mp4)devolverá todos los archivos que coincidan con esas extensiones, incluso si una de las extensiones tuvo 0 resultados .fuente
ls *.@(mp3|exe|mp4). Necesitasshopt -s extglobque esto funcione. Por cierto, tambiénlses inútil, simplemente podrías hacerloprintf '%s\n' *.@(mp3|exe|mp4).fuente
mdfindproduce las mejores / más rápidas búsquedas NUNCA!mdfind -name querystring | grep "\.h$"encuentra todos los encabezados con quesrystring en el título del archivo. pronto.ls -R | findstr ".mp3"ls -R=> enumera subdirectorios de forma recursivafuente
Aquí hay un ejemplo que funcionó para mí.
fuente