查找具有相同 md5sum 的文件并在同一行中打印相似的文件
Find the files with same md5sum and print ones alike in the same line
我正在尝试做一个写在标题中,我用一个例子来解释:
树目录:
(A B C D H F G 是我的档案)
dir0/
dir0/A //MD5sum equal MD5sum B
dir0/C
dir0/D // MD5sum equal MD5sum F G
dir0/dir1/B // MD5sum equal MD5sum A
dir0/dir1/H
dir0/dir1/dir2/G //MD5sum equal MD5sum F D
dir0/dir1/dir2/F //MD5sum equal MD5sum G D
使用此命令:
find dir0/ -type f -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=prepend | awk '{ print }'
我搜索dir0和subdir中的所有文件,计算MD5sum,排序,select只有文件相等并分组,只打印路径文件。
好的,我得到了这个输出:
dir0/A ]
dir0/dir1/B ] first group
dir0/D ]
dir0/dir1/dir2/F ]
dir0/dir1/dir2/G ] second group
怎样才能有如下的输出呢?(每个文件在同一行有相同的MD5sum,显然没有"first, second ... group")
dir0/A dir0/dir1/B ] first group
dir0/D dir0/dir1/dir2/F dir0/dir1/dir2/G ] second group
执行此操作的最短方法是添加如下管道步骤:
awk 'BEGIN{RS=RS RS}{=}1'
RS = RS RS
导致 Awk 使用 "\n\n"
作为其记录分隔符,因此将每个块作为单个记录读取。 FS
字段分隔符是空格,其中包括换行符,因此我们无需做任何拆分行的工作。
=
并没有真正改变 </code> 的值,但 Awk 认为它可以改变,这意味着它会重建 <code>[=16=]
(目前其中有换行符)来自 </code>、<code>
等,加入 OFS
(默认为 " "
)。
1
导致 Awk 在每条记录上打印 [=16=]
(和 ORS
,这仍然是一个换行符)。
我正在尝试做一个写在标题中,我用一个例子来解释:
树目录: (A B C D H F G 是我的档案)
dir0/
dir0/A //MD5sum equal MD5sum B
dir0/C
dir0/D // MD5sum equal MD5sum F G
dir0/dir1/B // MD5sum equal MD5sum A
dir0/dir1/H
dir0/dir1/dir2/G //MD5sum equal MD5sum F D
dir0/dir1/dir2/F //MD5sum equal MD5sum G D
使用此命令:
find dir0/ -type f -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=prepend | awk '{ print }'
我搜索dir0和subdir中的所有文件,计算MD5sum,排序,select只有文件相等并分组,只打印路径文件。
好的,我得到了这个输出:
dir0/A ]
dir0/dir1/B ] first group
dir0/D ]
dir0/dir1/dir2/F ]
dir0/dir1/dir2/G ] second group
怎样才能有如下的输出呢?(每个文件在同一行有相同的MD5sum,显然没有"first, second ... group")
dir0/A dir0/dir1/B ] first group
dir0/D dir0/dir1/dir2/F dir0/dir1/dir2/G ] second group
执行此操作的最短方法是添加如下管道步骤:
awk 'BEGIN{RS=RS RS}{=}1'
RS = RS RS
导致 Awk 使用 "\n\n"
作为其记录分隔符,因此将每个块作为单个记录读取。 FS
字段分隔符是空格,其中包括换行符,因此我们无需做任何拆分行的工作。
=
并没有真正改变 </code> 的值,但 Awk 认为它可以改变,这意味着它会重建 <code>[=16=]
(目前其中有换行符)来自 </code>、<code>
等,加入 OFS
(默认为 " "
)。
1
导致 Awk 在每条记录上打印 [=16=]
(和 ORS
,这仍然是一个换行符)。