Re: Duda sobre el comportamiento de "cat"
El Mon, 13 Jul 2015 14:36:05 -0500, Carlos Zuniga escribió:
> 2015-07-12 11:48 GMT-05:00 Camaleón <noelamac@gmail.com>:
(...)
>> find logs -maxdepth 1 -type f -name "example.com.*" -ctime -1 exec cat
>> "logs/example.com_$(date '+%Y%m')_access_log.txt" {} \; exec mv {}
>> logs/archive \;
(...)
> Acabo de probar y me funciona como se espera, ojo que cambié la línea
> por esto:
>
> find . -maxdepth 1 -type f -name 'example.com.*' -ctime -1 -exec
> cat {} >> "logs/log_$(date '+%Y%m').txt" \; -exec mv {} arch/ \;
>
> Notesé que añadí {} antes de la redirección y lo eliminé del final.
> Inicialmente no me dí cuenta de este {} extra y se repitieron las
> entradas en el log mensual (parece que `cat foo >> bar foo` añade el
> contenido de foo en bar 2 veces). Tal ves es ese el problema? Puedes
> pegar el comando exacto que utilizas?
El comando exacto lo puse en el primer mensaje, lo he dejado transcrito
más arriba.
El problema no es la posición del cierre de la instrucción "-exec {}"
sino el orden que devuelve el comando find con el resultado de los
archivos que es indeterminado (vamos, que no sé qué lógica sigue) y yo
necesitaba que fuera alfabético. Con un "sort" se soluciona, pero se
pierde la gracia del "-exec" (hay que usar alguna estructura de bucle
como decía Manolo) y con un simple "cat" se obtienen los archivos en el
orden correcto.
Saludos,
--
Camaleón
Reply to: