Не используйте [
]
или -eq 0
при проверке результата команды. Просто напишите if <command>
напрямую.
for i in $(find . -type f -name 'Pks8sqRatio_ist_LogSplineInterpPk_iz_10.dat'); do
if diff "$i" "./XSAF_LSST /SAVE_WP_Pk_qui_ont_permis_de_voir_la_concordance_entre_Totally_et_XSAF_13_JUIN_2019/WP_Pk/h_up/Pks8sqRatio_ist_LogSplineInterpPk_iz_10.dat"; then
echo "MATCHING" $i
fi
done
Тогда избегайте зацикливания на результатах find
. Это не безопасно для пробелов. Путь с пробелами в нем приведет к ошибкам. В вашем случае вы можете использовать find -exec
для объединения команд find
и diff
.
find . -type f -name Pks8sqRatio_ist_LogSplineInterpPk_iz_10.dat \
-exec diff {} "./XSAF_LSST /SAVE_WP_Pk_qui_ont_permis_de_voir_la_concordance_entre_Totally_et_XSAF_13_JUIN_2019/WP_Pk/h_up/Pks8sqRatio_ist_LogSplineInterpPk_iz_10.dat" \; \
-exec echo "MATCHING" {} \;
Тогда я бы заменил -exec echo
на -print
.
find . -type f -name Pks8sqRatio_ist_LogSplineInterpPk_iz_10.dat \
-exec diff {} "./XSAF_LSST /SAVE_WP_Pk_qui_ont_permis_de_voir_la_concordance_entre_Totally_et_XSAF_13_JUIN_2019/WP_Pk/h_up/Pks8sqRatio_ist_LogSplineInterpPk_iz_10.dat" \; \
-print
Еще лучше, используйте diff -s
, чтобы сообщить, когда файлы совпадают. Тогда нет необходимости даже проверять результат.
find . -type f -name Pks8sqRatio_ist_LogSplineInterpPk_iz_10.dat \
-exec diff -s {} "./XSAF_LSST /SAVE_WP_Pk_qui_ont_permis_de_voir_la_concordance_entre_Totally_et_XSAF_13_JUIN_2019/WP_Pk/h_up/Pks8sqRatio_ist_LogSplineInterpPk_iz_10.dat" \;