Câu trả lời:
Nếu tên tệp của bạn đơn giản (không có khoảng trắng, v.v.), bạn có thể sử dụng
left_dir=...
right_dir=...
find $left_dir -type f | while read left ; do
relpath=${left#$left_dir}
diff <(myfilter $left) <(myfilter $right_dir$relpath)
done
Nếu đây đã là "nhiều kịch bản" và vẫn còn vấn đề (khoảng trắng trong tên tệp, các tệp không tồn tại ở một bên, v.v.), có lẽ bạn đã hết may mắn.
find left -type d
, find right_dir -type d
bỏ sự khác biệt trái và phải và áp dụng mã của bạn vào giao lộ.
$left_dir/path/deeper/than/one
tồn tại, relpath sẽ path/deeper/than/one
và diff sẽ so sánh tệp với $right_dir/path/deeper/than/one
.
find … -print0 | while IFS= read -r -d '' …