找到linux中2个目录的区别

时间:2015-03-11 06:18:22

标签: linux shell

大家好,

      I was trying to find the difference between two directories, dir structure as follows.
  1. DIR1 /子目录/ file.txt的
  2. DIR2 /子目录/ nffile.txt
  3. 当我尝试使用“diff -r dir1 dir2”时,它只显示文件中的内容差异,但我想要新增加文件的实习生。

    我们可以使用“diff”命令找到这些目录之间的差异。

4 个答案:

答案 0 :(得分:1)

尝试使用--brief选项,例如:

$ diff --recursive --brief dir1 dir2
Only in dir1/dir1: file1
Only in dir2/dir1: file2
Only in dir1: dir2
$

答案 1 :(得分:0)

Alt.1 - 使用diff

diff <(ls dir1) <(ls dir2)

Alt.2 - 不使用diff的脚本

 for i in /my/directory/*; do
    name=$(basename "$i")
    if [[ ! -e "/my/other/directory/$name" ]]; then
       echo $name not found in other directory
    fi
 done

答案 2 :(得分:0)

diff -qrN dir1 dir2

如果其中一个目录的名称可能与参数混淆

diff -qrN -- -f -z

其中-f和-z实际上是目录名

删除q参数,以获取有关更改内容的更多详细信息。如果您想了解更多细节,请使用以下

diff -rupN -- dir1 dir2

答案 3 :(得分:0)

快速且脏的新文件检测:

我有兴趣在特定目录中查找安装后创建的新文件,因此我执行了以下操作:

  1. 在当前结构状态下创建感兴趣目录的硬链接镜像
mkdir -p ~/tmp/snapshot/
cp -al ~/DirOfInterest/ ~/tmp/snapshot/
  1. ~/DirOfInterest/ 中执行安装
  2. 使用过 the method as described in SMAs' answer
diff -qr ~/DirOfInterest/ ~/tmp/snapshot/DirOfInterest/ &>~/ListOfNewFiles.txt
  1. 注意到差异后,我删除了“快照镜像”
rm -rf  ~/tmp/snapshot/DirOfInterest/

注意:由于“快照目录”是由硬链接组成的镜像,因此在整个安装过程中“快照”时对已存在文件的修改将不会被检测到,因为硬链接指向相同的数据块. 仅新创建的文件 会被检测到。