我想比较不同目录中具有相同名称的2个文件。 $ 1和$ 2是2个目录。我可以检查是否有相同的名称文件,但后来我不知道如何获取第二个文件..
cd $1
for i in `ls`
do
if [ -f $2/$i ]
then
echo "find it in another directory"
GET THE OTHER FILE IN $2, THEN COMPARE THEM
cmp -s $i THE OTHER FILE
if [ $? = 0 ]
echo "they are same"
else
echo "they are different"
fi
fi
done
答案 0 :(得分:1)
最简单的问题是args中的空格 - 易于修复,只需引用$ 1和$ 2
if [ -f "$2/$i" ]
但是我怀疑问题是你要兑换成$ 1,这意味着$ 2无效(如果是相对路径)
Solution1)使用绝对路径(例如/ staff / bathpp / stuff / dir2)
解决方案2)如果你期望相对路径,那么在跳跃之前抓住当前目录。
origDir=`pwd`
...
path2="$origDir/$path2"
就个人而言,我会进行一些检查,因此对两者都有效。
答案 1 :(得分:0)
for FIRST in $1/*
do
SECOND=$2/$(basename "$FIRST")
if [ -f "$SECOND" ]; then
diff --brief "$FIRST" "$SECOND"
fi
done
N.B。 diff --brief
仅在不同时输出。如果您想查看实际差异,请移除--brief
。