1

異なるディレクトリにある同じ名前の2つのファイルを比較したい。$1と$2は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

最も単純な問題は、引数のスペースです。修正は簡単で、$1と$2を引用するだけです。

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

しかし、問題はあなたが$ 1にCDしていることだと思います。これは、$ 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 に答える