文件大小相同但文件名不同的两个目录之间的差异

时间:2019-03-13 16:50:42

标签: linux bash file directory diff

我有两个目录,分别是D1和D2。它们都包含相同数量的大小相同但名称不同的文件。假设D1包含f1,f2和f3,D2包含ff1,ff2和ff3。 在这种情况下,我想对f1和ff1,f2和ff2与f3和ff3进行比较。 我该怎么做?

2 个答案:

答案 0 :(得分:0)

整rick。假设您肯定要比较名称不同但大小相同的文件-如果源(D1)和目标(D2)目录中有多个相同大小的文件,则此解决方案将明显显示错误结果

先尝试获得两个列表:

MenuItem

现在,遍历它们并执行您的eval "declare -gA sizes1=( $(find D1 -printf "[%s]=%p\n") )" eval "declare -gA sizes2=( $(find D2 -printf "[%s]=%p\n") )"

diff

希望有帮助,并指出您想要的方向。

答案 1 :(得分:0)

假设:

  1. 相应文件的大小相同
  2. 同一目录中没有两个文件具有相同的大小
  3. 文件名很简单(文件名中没有空格或换行符之类的有趣符号)

那么您可以做:

ls -1S d1/* d2/* | while read f1; read f2; do echo "diff $f1 vs $f2"; diff "$f1" "$f2"; done

为什么这样做:

  • ls -1S d1/* d2/*:这将创建一个d1d2中按大小排序的所有文件的列表。这意味着两个连续文件大小相同的列表。
  • while read f1; read f2; do:这将读取两个条目。

在一个简单的测试中,这给了我以下输出:

diff d1/f3 d2/ff1
1c1
< 11
---
> 12
diff d1/f2 d2/ff2
diff d1/f1 d2/ff3

在这里,f1和ff3为空,f2和ff2相同,其中有1个字符,f3和ff1不同,其中有2个字符。