我有两个目录具有相同的文件列表.我需要使用该diff命令比较两个目录中的所有文件.是否有一个简单的命令行选项来执行它,或者我是否必须编写一个shell脚本来获取文件列表然后迭代它们?
Lau*_*ble 402
您可以使用该diff命令:
diff -bur folder1/ folder2/
Run Code Online (Sandbox Code Playgroud)
这将输出一个忽略空格的递归diff,具有统一的上下文:
小智 112
如果您只想查看不同的文件,可以使用:
diff -qr dir_one dir_two | sort
Run Code Online (Sandbox Code Playgroud)
选项"q"仅显示不同但不同的内容的文件,"sort"将按字母顺序排列输出.
mik*_*iku 11
diff不仅可以比较两个文件,还可以通过使用该-r选项遍历整个目录树,递归地检查子目录和每个树中可比较点上发生的文件之间的差异.
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...
Run Code Online (Sandbox Code Playgroud)
如果您特别不想比较文件的内容,而只想检查两个目录中都不存在的文件内容,则可以比较由另一个命令生成的文件列表。
diff <(find DIR1 -printf '%P\n' | sort) <(find DIR2 -printf '%P\n' | sort) | grep '^[<>]'
Run Code Online (Sandbox Code Playgroud)
-printf '%P\n'告诉find不要用根目录作为输出路径的前缀。
我还添加了sort确保两次调用中文件的顺序相同的内容find。
最后grep删除有关相同输入行的信息。
在过去 5-10 年里,当使用 git/svn 或磁盘上的多个 git/svn 实例时,这对我来说是最有用的东西之一,有人可能会觉得有用:
diff -burN /path/to/directory1 /path/to/directory2 | grep +++
Run Code Online (Sandbox Code Playgroud)
或者:
git diff /path/to/directory1 | grep +++
Run Code Online (Sandbox Code Playgroud)
它为您提供了所触及的不同文件的快照,而无需“减少”或“更多”输出。然后你只需对各个文件进行比较即可。
| 归档时间: |
|
| 查看次数: |
208770 次 |
| 最近记录: |