给定文件名,如何从shell中的目录中获取它

时间:2012-04-19 03:39:50

标签: linux file shell find

我想比较不同目录中具有相同名称的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

2 个答案:

答案 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