ディレクトリ内のファイル間の違い

ディレクトリ内のファイル間の違い

ファイルは同じですが、内容が異なる2つのディレクトリがあります。私はそれらの他のファイルをリストしたいと思います。例えば

File1、file2、file3などのファイルを含む2つのフォルダFolder1とFolder2があります。フォルダ1のファイル2は、フォルダ2のファイル2と同様ではない。

したがって、私のコマンドはfile2をリストする必要があります。

どうすればいいですか?

答え1

ディレクトリを次のものと比較できますdiff

$ diff -qr dirA dirB
Only in dirB: file.txt
Files dirA/README and dirB/README differ

答え2

私はこの目的のための特別なツールがあると確信しています(fdupes私はそれを考えました)、次の簡単なスクリプトがこれを行う必要があります。

#!/usr/bin/env sh

if [ "a$1" = a -o "a$2" = a ]
then
    echo Directory name missing.
    echo Exiting
    exit 1
fi

for i in "$1"/*
do
    filename=$(basename "$i")
    diff "${1}/${filename}" "${2}/${filename}" > /dev/null 2>&1
    if [ "$?" -eq 1 ]
    then
    echo "$filename" is different
    fi
done

exit 0

diffバイナリが必要です$PATH(おそらく持っているでしょう)。使用法:

$ ./diff.sh  Folder1 Folder2
7 is different
file2 is different

答え3

解決策1: そこに行って見ることができます:https://askubuntu.com/questions/111495/how-to-diff-multiple-files-across-directories特にRinzwindの答えは直接できると規定していますdiff -qr Folder1 Folder2

他の解決策は、結果をマージしたい場合にのみ便利です。

解決策2: GUIアプリケーションを実行できる場合の最善の解決策は、次のことです。フュージョンまたはkdiff3

解決策3: 別の解決策は、バージョン管理ソフトウェアを使用することです。たとえば、gitを使用すると、次のことができます。

$ cd Folder1
$ git init
$ git add .
$ git commit -m "First commit"
$ rm -rf *
$ cp -r /PATH/TO/Folder2/* ./

git statusその後、またはを使用してgit diff違いを確認できます。このソリューションでは、まずバックアップを作成することをお勧めします。rm -rf *ドットファイルを削除しないように注意してください。

解決策4: 最後に、このプラグインを見てくださいvim(まだ試していません)。https://github.com/will133/vim-dirdiff。のプラグインも存在すると確信していますEmacs

関連情報