两个目录的不同文件

两个目录的不同文件

我想比较两个目录。我尝试了 diff,但它包括文件内部的更改。我想要的只是像这样的东西

file a is just in /A 
file b is missing in /A 
file c changed
directory d is missing in /A 
directory e is just in /A

我认为在进行完整文件修补时这种情况很常见,但我不知道一个好的解决方案。

答案1

您正在寻找

diff -rq (dir1) (dir2)

概念证明:

#!/bin/sh
#create our test
mkdir -p /tmp/a/b
echo "test" >> /tmp/a/c
mkdir -p /tmp/a/d/e
echo "blah" >> /tmp/a/d/e/f #only exists here
mkdir -p /tmp/q/b
echo "testing" >> /tmp/q/c #/tmp/a/c shouldnt match
mkdir -p /tmp/q/d/e
echo "blah" >> /tmp/q/d/e/g #only exists here
diff -rq /tmp/a /tmp/q

结果是 :

Files /tmp/a/c and /tmp/q/c differ
Only in /tmp/a/d/e: f
Only in /tmp/q/d/e: g

答案2

您只需添加-q标记以使其简短:

# diff -q dir1 dir2
Files dir1/both and dir2/both differ
Only in dir1/: one
Only in dir2:/ two

答案3

为了查找重复项,您可以使用:

fdupes -r1 dir1 dir2

虽然其他人给了你很多好的建议,但你也应该尝试一下。

如果你使用

fdupes -rd dir1 dir2

它会提示你保留哪个文件(其他文件将被删除)。对于删除重复文件非常有用(我确实在我的照片上很好地利用了它)

注意:是的,我知道问题并不完全是关于这个的,但也许它可以帮助他或其他人;)

答案4

您可以尝试以下差异ls

ls A > a.txt
ls B > B.txt
diff a.txt b.txt

虽然不是一个命令,但是它应该可以工作。

相关内容