目录中文件之间的差异

目录中文件之间的差异

我有两个目录,它们具有相同的文件,但内容有所不同。我想列出那些不同的文件。例如

有两个文件夹Folder1和Folder2,其中包含文件file1、file2、file3等。文件夹 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

解决方案一: 你可以去那里看看: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 statusgit diff来查看差异。对于此解决方案,您可能需要先进行备份。请注意,rm -rf *不要删除点文件。

解决方案4: 最后,你可以看看这个vim插件(我还没试过):https://github.com/will133/vim-dirdiff。我确信这样的插件也存在于Emacs.

相关内容