我有两个目录具有相同的文件列表。我需要使用diff
命令来比较两个目录中的所有文件。是否有一个简单的命令行选项来完成它,还是必须编写一个shell脚本来获取文件列表,然后遍历它们?差异文件存在于两个不同的目录中
回答
您可以使用该diff
命令:
diff -bur folder1/ folder2/
这将输出一个递归DIFF无视空间,用统一的背景:
- b标志意味着忽略空白
- ü标志意味着一个统一的环境(3条线之前和之后)
- [R标志意味着递归
diff
不仅可以比较两个文件,它可以通过使用-r
选项来遍历整个目录树,递归地检查每个树中可比较点发生的子目录和文件之间的差异。
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...
差异有一个选项-r
这意味着要做到这一点。
diff -r dir1 dir2
如果它是GNU的diff,那么你就应该能够在两个目录指向它并使用-r选项。
否则,请尝试使用
for i in $(\ls -d ./dir1/*); do diff ${i} dir2; done
注:正如Dennis在评论部分指出的那样,你实际上并不需要在ls上进行命令替换。我一直这样做了很长时间,我几乎在自动驾驶仪上这样做,并用我需要的命令来获取我的文件列表进行比较。
另外我忘了补充说我暂时禁用我的别名ls到GNU ls,这样我就失去了GNU ls返回的列表中的颜色格式信息。
没有必要使用'ls':'为我in。/ dir1/*' – 2010-01-07 12:17:13
@ Dennis,时髦的捷径。 +1。我很习惯做命令替换,虽然它是自动的,我只是使用我需要的任何命令,例如有时我正在使用find。使用ls也可以让我玩更多的dir列表,例如反向时间而不是默认顺序。 – 2010-01-07 12:49:59
如果你只看到不同的文件感兴趣,你可以使用:
diff -qr dir_one dir_two | sort
选择“Q”将只显示不同的是不同的文件,而不是内容,和“排序”将按字母顺序排列输出。
太棒了!也有效地工作 - 即,如果整个子目录仅存在于其中一个目录中,则其停止重复进入并且仅报告子目录本身(没有其后续内容)。非常好!! – SomethingSomething 2015-03-26 09:17:00
'-q'选项man!我爱你。 – Campa 2017-11-23 09:20:35
以下是显示两个文件夹中文件差异的脚本。它递归地工作。更改dir1和dir2。
(search() { for i in $1/*; do [ -f "$i" ] && (diff "$1/${i##*/}" "$2/${i##*/}" || echo "files: $1/${i##*/} $2/${i##*/}"); [ -d "$i" ] && search "$1/${i##*/}" "$2/${i##*/}"; done }; search "dir1" "dir2")
试试这个:
diff -rq /path/to/folder1 /path/to/folder2
这复制了一个现有的答案,并没有添加任何新内容。除非你真的有新的东西来贡献,否则请不要发布答案。 – 2017-06-06 21:35:09
- 1. 来自两个不同目录的两个文件的差异
- 2. 为什么差异显示这两个文件存在差异?
- 3. 获取两个不同分支中文件的差异
- 4. 比较两个不同目录中存在的文件中的数据
- 5. 如何将两个目录的差异复制到新目录?
- 6. 当在Windows中的两个文件上执行差异时,获取两个文件中差异的行数
- 7. 用于创建文件/文件夹级补丁(包括二进制文件)的两个目录树的差异
- 8. 差异,两个录制
- 9. 使用Makefile将对象文件存储在两个不同的目录中? [C]
- 10. 使用minGW差异显示两个文本文件的差异
- 11. 基于文件名的不同位置的差异文件
- 12. Bash脚本获得两个目录中文件的权限差异
- 13. 比较两个文件,并保存在Linux的差异
- 14. 比较两个目录与每个文件单独的差异输出
- 15. 比较不同目录中的两个文件的名称
- 16. 获取两个文件的差异
- 17. 检查两个不同目录中的文件名(Unix)
- 18. 找到两个XML之间的差异差异在marklogic中的文件
- 19. SVN在已删除目录中的文件的日志/差异
- 20. 查询比较两个不同表中两列的差异
- 21. 比较2个目录,并显示每个文件的差异
- 22. 两个连续日期之间的差异,存储在不同的行中
- 23. 在两个不同的git仓库中获取文件差异并适用于第一个仓库
- 24. 在两个不同的平台上,类文件的大小是否有差异?
- 25. 用文件比较两个目录,然后在另一个文件中给出结果差异。C#
- 26. 在同一个目录中的两个不同的Git回购
- 27. eclipse,在不同的目录下有两个不同的文件名称
- 28. 不同文件的差异操作
- 29. 差异与不同的make文件
- 30. 两台不同计算机上的文件差异
在Windows中,你用什么来作出这样的diff命令? – onmyway133 2013-02-26 10:09:48
您可以通过下载[GNU utilities for Win32](http://unxutils.sourceforge.net/)来访问'diff'命令。 – 2013-02-26 13:32:08
我也发现--brief选项很有用;你会得到已更改文件的列表,并可以分别处理它们 – Dariusz 2013-04-03 12:44:35