批量文件比较shell脚本
#!/bin/bash
Target_PATH_1=$(realpath ${1})
Target_PATH_2=$(realpath ${2})
Target_PATH_1=$([[ "${Target_PATH_1}" = /* ]] && echo "$(realpath ${Target_PATH_1})" || echo "$(realpath ${PWD}/${Target_PATH_1})")
Target_PATH_2=$([[ "${Target_PATH_2}" = /* ]] && echo "$(realpath ${Target_PATH_2})" || echo "$(realpath ${PWD}/${Target_PATH_2})")
SameFilesArray=()
DiffenentFilesArray=()
echo ${Target_PATH_1}
echo ${Target_PATH_2}
CurrentPath=$(realpath ${PWD})
FileArray_1=$(cd ${Target_PATH_1} && find .)
FileArray_2=$(cd ${Target_PATH_2} && find .)
#echo ${FileArray_1}
#echo ${FileArray_2}
for FileName in ${FileArray_1[@]}
do
if [ -e "${Target_PATH_2}/${FileName}" ]; then
if [ -d "${Target_PATH_1}/${FileName}" ] && [ -d "${Target_PATH_2}/${FileName}" ]; then
echo "文件${Target_PATH_1}/${FileName}与文件${Target_PATH_2}/${FileName}为目录"
elif [ -f "${Target_PATH_1}/${FileName}" ] && [ -f "${Target_PATH_2}/${FileName}" ]; then
diff -q ${Target_PATH_1}/${FileName} ${Target_PATH_2}/${FileName}
value=$?
if [[ ${value} == 0 ]]; then
#echo "文件${Target_PATH_1}/${FileName}与文件${Target_PATH_2}/${FileName}一致: ${value}"
SameFilesArray[${#SameFilesArray[@]}]="${Target_PATH_1}/${FileName} ${Target_PATH_2}/${FileName}"
else
#echo "文件${Target_PATH_1}/${FileName}与文件${Target_PATH_2}/${FileName}不一致: ${#DiffenentFilesArray[@]}"
DiffenentFilesArray[${#DiffenentFilesArray[@]}]="${Target_PATH_1}/${FileName} ${Target_PATH_2}/${FileName}"
fi
else
echo "文件${Target_PATH_1}/${FileName}与文件${Target_PATH_2}/${FileName}类别不一致"
fi
else
echo "${FileName}只在${Target_PATH_1}中存在"
fi
done
for FileName in ${FileArray_2[@]}
do
if [ ! -e "${Target_PATH_1}/${FileName}" ]; then
echo "${FileName}只在${Target_PATH_1}中存在"
fi
done
echo "一致的文件:"
echo "*****************************************************************************************"
for((i=0;i<${#SameFilesArray[@]};++i))
do
echo "${SameFilesArray[${i}]}"
done
echo "*****************************************************************************************"
echo "不一致的文件:"
echo "*****************************************************************************************"
for((i=0;i<${#DiffenentFilesArray[@]};++i))
do
echo "${DiffenentFilesArray[${i}]}"
done
echo "*****************************************************************************************"