ฉันกำลังพยายามกำหนดขนาดของไฟล์ที่จะถูกคัดลอกใหม่เมื่อทำการซิงค์สองโฟลเดอร์โดยการเรียกใช้ rsync ในโหมดแห้งแล้วรวมขนาดของไฟล์ที่แสดงในเอาต์พุตของ rsync
ขณะนี้ฉันติดอยู่ที่คำนำหน้าไฟล์โดยโฟลเดอร์แม่ของพวกเขา ฉันค้นพบวิธีนำหน้าบรรทัดโดยใช้ sed และวิธีหลบเลี่ยงการใช้ sed แต่ฉันมีปัญหาในการรวมสองรายการนี้
นี่เป็นวิธีที่ฉันได้รับ:
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}'
นี่คือผลลัพธ์ที่ฉันได้รับจาก 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
ความคิดใด ๆ เกี่ยวกับวิธีการหลบหนีอย่างถูกต้องจะได้รับการชื่นชมอย่างมาก