J'essaie de déterminer la taille des fichiers qui seraient nouvellement copiés lors de la synchronisation de deux dossiers en exécutant rsync en mode sec, puis en résumant les tailles des fichiers répertoriés dans la sortie de rsync.
Actuellement, je suis bloqué à préfixer les fichiers par leur dossier parent. J'ai découvert comment préfixer des lignes en utilisant sed et comment échapper en utilisant sed, mais j'ai du mal à combiner ces deux.
Voilà jusqu'où je suis arrivé:
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}'
Ceci est la sortie que j'obtiens 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
Toute idée sur la façon de s'échapper correctement serait très appréciée.