Estoy tratando de determinar el tamaño de los archivos que se copiarían nuevamente al sincronizar dos carpetas ejecutando rsync en modo seco y luego resumiendo los tamaños de los archivos enumerados en la salida de rsync.
Actualmente estoy atascado en el prefijo de los archivos por su carpeta principal. Descubrí cómo prefijar líneas usando sed y cómo escapar usando sed, pero tengo problemas para combinar esos dos.
Así de lejos llegué:
source="/my/source/folder/"
target="/my/target/folder/"
escaped=`echo "$source" | sed -e 's/[\/&]/\\//g'`
du `rsync -ahnv $source $target | tail -n +2 | head -n -3 | sed "s/^/$escaped/"` | awk '{i+=$1} END {print i}'
Este es el resultado que obtengo de bash -x myscript.sh
+ source=/my/source/folder/
+ target=/my/target/folder
++ echo /my/source/folder/
++ sed -e 's/[\/&]/\//g'
+ escaped=/my/source/folder/
+ awk '{i+=$1} END {print i}'
++ rsync -ahnv /my/source/folder/ /my/target/folder/
++ sed 's/^//my/source/folder//'
++ head -n -3
++ tail -n +2
sed: -e expression #1, char 8: unknown option to `s'
+ du
80268
Cualquier idea sobre cómo escapar adecuadamente sería muy apreciada.