Para el registro, la [...]construcción coincide con un solo carácter, que puede ser cualquiera de los caracteres entre paréntesis. Por lo tanto, su expresión coincide JJA o Jug( Jdesde [Jun], udesde [Jul]y gdesde [Aug]) pero no las abreviaciones de mes que esperaba hacer coincidir.
tripleee
Respuestas:
12
Puede coincidir en múltiples patrones de esta manera:
awk '/Jun/ || /July/ || /Aug/'<(ls -lrh)
Esto devuelve todas las coincidencias para junio, julio o agosto. No necesita la printdeclaración, ya que es awkla acción predeterminada.
awk entiende las expresiones regulares extendidas, por lo que para un modelo tan simple como que se puede escribir como awk '/Jun|Jul|Aug/'oawk '/Ju[nl]|Aug/'
cas
5
Como regla general, es una muy mala idea analizar la salida de ls . Una mejor manera de hacer lo que quieres es
stat -c "%n %y"*| grep 2013-0[678]
Alternativamente, verifique solo el último campo para protegerse contra el caso improbable de que el nombre del archivo sea una fecha:
stat -c "%n %y"*| awk '$NF ~ /2013-0[678]/'
De man stat:
-c --format=FORMAT
use the specified FORMAT instead of the default; output a new‐
line after each useof FORMAT
%y time oflast modification, human-readable
%n file name
También es un buen ejemplo. Nunca revisé STAT antes. gracias por la gran información
OmiPenguin
Tal vez cambie a ... | awk '$NF ~ /2013-0[678]/'para verificar solo el último campo de salida, en el (¿improbable?) Incluso que el nombre de un archivo coincida con la expresión regular, incluso cuando la fecha no lo hace.
tripleee
3
lses un comando para mostrar información sobre archivos en forma legible por humanos. No lo use en scripts .
El comando para buscar archivos en un árbol de directorios que coincida con ciertos criterios es find. Si tiene GNU find (es decir, Linux o Cygwin no incrustado) o FreeBSD find (es decir, FreeBSD u OSX), puede usar -newermtpara hacer coincidir los archivos que se modificaron por última vez después de una fecha determinada.
Agregue un año si desea hacer coincidir los archivos en un año específico, en lugar del año calendario cuando se ejecuta el script.
Si su implementación de búsqueda no tiene -newermt, tendrá que arreglárselas con -newer, que compara la fecha del archivo que se findencontró con un archivo fijo. use touchpara crear archivos temporales con la fecha que desea usar como límite.
[...]
construcción coincide con un solo carácter, que puede ser cualquiera de los caracteres entre paréntesis. Por lo tanto, su expresión coincideJJA
oJug
(J
desde[Jun]
,u
desde[Jul]
yg
desde[Aug]
) pero no las abreviaciones de mes que esperaba hacer coincidir.Respuestas:
Puede coincidir en múltiples patrones de esta manera:
Esto devuelve todas las coincidencias para junio, julio o agosto. No necesita la
print
declaración, ya que esawk
la acción predeterminada.fuente
awk '/Jun|Jul|Aug/'
oawk '/Ju[nl]|Aug/'
Como regla general, es una muy mala idea analizar la salida de ls . Una mejor manera de hacer lo que quieres es
Alternativamente, verifique solo el último campo para protegerse contra el caso improbable de que el nombre del archivo sea una fecha:
De
man stat
:fuente
| awk '$NF ~ /2013-0[678]/'
para verificar solo el último campo de salida, en el (¿improbable?) Incluso que el nombre de un archivo coincida con la expresión regular, incluso cuando la fecha no lo hace.ls
es un comando para mostrar información sobre archivos en forma legible por humanos. No lo use en scripts .El comando para buscar archivos en un árbol de directorios que coincida con ciertos criterios es
find
. Si tiene GNU find (es decir, Linux o Cygwin no incrustado) o FreeBSD find (es decir, FreeBSD u OSX), puede usar-newermt
para hacer coincidir los archivos que se modificaron por última vez después de una fecha determinada.Agregue un año si desea hacer coincidir los archivos en un año específico, en lugar del año calendario cuando se ejecuta el script.
Si su implementación de búsqueda no tiene
-newermt
, tendrá que arreglárselas con-newer
, que compara la fecha del archivo que sefind
encontró con un archivo fijo. usetouch
para crear archivos temporales con la fecha que desea usar como límite.fuente