1

我想比较不同目录中同名的 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
4

2 回答 2

1

最简单的问题是 args 中的空格 - 易于修复,只需引用 $1 和 $2

if [ -f "$2/$i" ]

但我怀疑问题是您正在 CD 到 $1,这意味着 $2 无效(如果它是相对路径)

解决方案1)使用绝对路径(例如/staff/bathpp/stuff/dir2)

解决方案2)如果您期望相对路径,则在跳转之前获取当前目录。

origDir=`pwd`
...
path2="$origDir/$path2"

就我个人而言,我会进行一些检查,所以它对两者都有效。

于 2012-04-19T03:49:20.563 回答
0
for FIRST in $1/*
do
    SECOND=$2/$(basename "$FIRST")
    if [ -f "$SECOND" ]; then
        diff --brief "$FIRST" "$SECOND"
    fi
done

NBdiff --brief仅在它们不同时输出。如果要查看实际差异,请删除--brief.

于 2012-04-19T04:01:17.073 回答