Editar la salida de un comando en bash

Muy buenas otra vez [tomaaa] !!

Esta vez acudo a vosotros para solicitar ayuda con la salida de un comando.

La idea del script es hacer un backup por scp, copiando los archivos modificados en las últimas 24 horas, de una máquina a otra.
Con el comando find, el listado me sale bien, me hace un listado de los archivo que luego mediante un for, voy leyendo de la variable cada archivo de la lista que me ha hecho y procedo a copiarlo con el scp.

Esto sería parte de mi script y lo que está en negrita es el comando que me da "problemas" [toctoc] [toctoc] :

listadoarchivos="`find . -atime -1 -ctime -1`"

#!/bin/bash

cd /home/
for dir in `ls`;
do
        echo "From $dir the following files will be copied:"
        cd $dir; #aquí estoy en un directorio del que quiera hacer el listado dentro de home/zokko/ por ejemplo
        listadoarchivos="`find . -atime -1 -ctime -1`" #aquí saco el listado de archivos modificados y lo guardo en la variable
        echo "$listadoarchivos" >> $filelog # aquí lo paso a un archivo de log para ver el listado que me encuentra el find
        for file in $listadoarchivos; # hago un recorrido por el listado de archivos y lo voy copiando a la máquina que quiero
        do
                echo "Copy $file from folder $dir" >> $filelog #chorradita para el log, copiar el archivo X de la carpeta Y
                scp -r $file salvado:/local/backup/$dir/$file #aquí es donde se copia el archivo a la carpeta, manteniendo la ruta con el dir y el archivo, con su ruta completa dentro del directorio, por si está dentro de otro directorio.
        done
        cd ..
done


El script, está bien, funciona y hace lo que quiero, pero no correctamente. Me explico, te saca el listado de archivos y los manda a la máquina que corresponda.

Pero si os fijais en el log que me saca, en cada línea del find me pone "./",
.
./.Xauthority
./.bash_history
./prueba/kk.txt
Copy . from folder zokko
Copy ./.Xauthority from folder zokko
Copy ./.bash_history from folder zokko
Copy ./prueba/kk from folder zokko


por lo tanto, cuando se ejecuta la primera línea del scp, quedaría algo así:
scp -r . salvado:/local/backup/

Por lo que si estoy en la carpeta /home/zokko/ y se ejecuta el comando así, tal cual, en vez de copiarme los 2 ó 3 archivos que realmente me interesan y que sacó el find correctamente, se lia a copiarme el home entero, siempre.

La primera vez está bien, xq así tienes la estructura de directorios y todo en la otra máquina, pero las posteriores veces, sólo me interesa que me copie los archivos modificados de hace más de un día.

Una solución podría ser quitar el "-r" del comando scp, para que no copiase directorios, sólo los archivos, pero el problema, es que si creo algún directorio nuevo, archivos o subdirectorios, quiero que me los copie sin problemas y sin el -r da un fallo, ya que sólo te deja copiar de uno en uno los archivo y no copiaría los directorios.

Después de todo este coñazo, mi pregunta es:
¿se podría editar la salida del find, para que el listado que guardo en la variable $listadoarchivos tenga cada línea sin el "./" inicial?

No se si me he explicado bien, pero bueno, si tenéis ideas, o algún tipo de alternativa, sería de agradecer. :-?

Un saludo!! [beer]
y porque no indicas que solo te busque los ficheros modificados, omitiendo los directorios? en el find creo que es poner -type f, eso si, si cambias los permisos de un directorio o creas un directorio vacio, estos no se copiarán.

Además si creas un nuevo fichero dentro de un directorio, la fecha del directorio se te modificará.

Scp copia directorios y todo el contenido de este.
man find
man sed
man awk
:D
2 respuestas