ZSH Globbing (extended)
glob expression
ls <path>/*/*
: lista todos los ficheros a 2 niveles del actualls <path>/**/*
: lista todos los ficheros en cualquier directoriols <path>/**/*.txt
: lista todos los ficheros .txt en cualquier directorio por debajols **/README.*
: lista todos los ficheros README en cualquier directorio por debajols **/*(.)
: listar solo ficherosls **/*(/)
: listar solo directorios- coindidencia parcial:
## Starts with READ $ ls **/(READ)*.* ## Ends With READ $ ls **/*(READ).* ## Contains READ Anywhere $ ls **/*(READ)*.*
glob operators
mucho mas:http://zsh.sourceforge.net/Doc/Release/Expansion.html#Filename-Generation
ls <path>/**/*<1-10>.txt
: lista cualquier fichero contenido en cualquier subdirectorio que acabe entre 1 y 10 (y .txc)ls <path>/**/[a]*.txt
: ficheros que empiezan por als <path>/**/(ab|bc)*.txt
: ficheros que empieza por ab* o bc*ls <path>/**/[^cC]*.txt
: ficheros que no empiecen por c o C
# All files that start with A $ ls **/[A]*(.) # All files that start with A or a $ ls **/[Aa]*(.) # All Files that contain the number $ ls **/*[1]*(.) # Any files that end in a vowel $ ls **/*[aeiouy](.) # Files that don't start with A or a $ ls **/[^Aa](.) # Files that end in a number $ ls **/*<1-10>(.)
glob qualifiers
- se usa una notación entre paréntesis para darle más criterios a las búsquedas
- se pueden agrupar los diferentes qualifiers (no permite espacios, lo que hace ciertas sentencias difíciles de leer)
/
: solo directorios.
: solo ficheros regularesLn
: indica tamaño exacto → L2m : 2MB+
: mayor que → L+2k : mayor de 2k-
: menor que
m
: modificación-
: modificados en las últimas X unidades (entre)+
: modificados más allá (antes de)- unidades:
M
: meses → mM-1 : último mesw
: semanash
: horasm
: minutoss
: segundos
o
/O
: ordena (ascendente / descendente) cualquier otro cualificador (pero va por separado, no inscrustado en el qualificador que queremos ordenar[a,b]
: muestra los ficheros entre posiciones a y b[c]
: muestra solo el fichero de posición c- ejemplo uso cualificadores
ls -l ./**/*(.mh-24) # ficheros modificados las últimas 24h ls -l ./**/*(.omh-24) # ERROR ls -l ./**/*(.mh-24 om[1,4]) # últimas 24h, ordenados de más reciente a menos, solo del 1 al 4
e
: estring → evalua una condición y solo pasan los que la cumplenls ./**/*(e:'[[ $REPLY COND ]]':)
- uso de : como separadores
- [[COND]] al uso
- $REPLY va conteniendo cada elemento que cumpla con /**/*
Ejemplos
print -l <path>/**/*(/)
: solo directoriosprint -l <path>/**/*(.)
: solo ficheros regularesprint -l <path>/**/*(L0)
: ficheros vacíosprint -l <path>/**/*(Lk+3)
: ficheros más grandes de 3kprint -l <path>/**/*(mh-1)
: ficheros modificados en la última horals -l <path>/**/*(om[1,3])
: mostrar ordenadamente ficheros modificados y mostrar los 3 últimosls -l zsh_demo/**/*(.Lm-2mh-1om[1,3])
≡ls -l zsh_demo/**/*(. Lm-2 mh-1 om [1,3])
: ficheros de menos de 2MB, modificados en la última hora, mostrar los tres primeros (por orden de modificación