Tôi đang cố gắng xác định kích thước của các tệp sẽ được sao chép mới khi đồng bộ hóa hai thư mục bằng cách chạy rsync ở chế độ khô và sau đó tổng hợp kích thước của các tệp được liệt kê trong đầu ra của rsync.
Hiện tại tôi đang bị kẹt ở tiền tố các tập tin bởi thư mục mẹ của chúng. Tôi đã tìm ra cách để tiền tố các dòng sử dụng sed và cách thoát bằng sed, nhưng tôi gặp khó khăn khi kết hợp cả hai.
Đây là cách tôi đã nhận được:
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}'
Đây là đầu ra tôi nhận được từ 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
Bất kỳ ý tưởng về cách thoát đúng sẽ được đánh giá cao.