[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Duda sobre el comportamiento de "cat"



2015-07-12 11:48 GMT-05:00 Camaleón <noelamac@gmail.com>:
> Hola,
>
> Estoy afinando un script para ejecutar a través de cron para que lleve a
> cabo dos acciones muy sencillas:
>
> 1/ Que busque un determinado archivo de texto (archivo de registro diario
> de apache) y vuelque su contenido en un nuevo archivo que contenga el
> acumulado mensual.
>
> 2/ Que mueva el archivo de registro diario a un directorio.
>
> Se trata de esta línea (no es copia/pega, puede haber algún gazapín):
>
> ***
> 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 \;
> ***
>
> La instrucción se ejecuta sin problemas salvo por el "cat", que me genera
> un archivo de registro con los días "alterados", es decir, en lugar de ir
> añadiendo el contenido del archivo al final del mensual:
>
> /logs/example.com_201507_access_log.txt
>
> [2015-07-01] ...
> [2015-07-01] ...
> [2015-07-02] ...
> [2015-07-02] ...
> [2015-07-03] ...
> [2015-07-03] ...
>
> Lo hace "a lo loco":
>
> [2015-07-02] ...
> [2015-07-02] ...
> [2015-07-01] ...
> [2015-07-01] ...
> [2015-07-03] ...
> [2015-07-03] ...
>
> ¿Qué puede provocar este comportamiento anómalo del redirector ">>"? Se
> supone que el contenido del archivo se debe añadir al final del actual
> pero no parece que lo haga :-?
>

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?


Reply to: