我想比较两个目录。我尝试了 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
虽然不是一个命令,但是它应该可以工作。