Tricky. Предполагая, что вы уверены, что хотите различать файлы с разными именами, но одинаковыми размерами - это решение будет явно показывать неправильные результаты, если у вас более одного файла с одинаковым размером в исходных (D1) и целевых (D2) каталогах .
Попробуйте сначала получить два списка:
eval "declare -gA sizes1=( $(find D1 -printf "[%s]=%p\n") )"
eval "declare -gA sizes2=( $(find D2 -printf "[%s]=%p\n") )"
Теперь итерируйте их и выполните diff
:
for item in ${!sizes1[@]} ; do
echo === testing ${sizes1[$item]} against ${sizes2[$item]} =====;
diff ${sizes1[$item]} ${sizes2[$item]};
done
Надеюсь, что это поможет, и направит вас в нужном вам направлении.