【发布时间】:2016-09-23 11:25:45
【问题描述】:
我有一个包含文件路径和文件名的文件,我想从字符串末尾开始排序。
我的文件包含如下列表:
/Volumes/Location/Workers/Andrew/2015-08-12_Andrew_PC/DOCS/3177109.doc
/Volumes/Location/Workers/Andrew/2015-09-17_Andrew_PC/DOCS/2130419.doc
/Volumes/Location/Workers/Bill/2016-03-17_Bill_PC/DOCS/1998816.doc
/Volumes/Location/Workers/Charlie/2016-07-06_Charlie_PC/DOCS/4744123.doc
我想对这个列表进行排序,使文件名是连续的,这将有助于根据文件名查找重复项,而不管路径如何。
列表应如下所示:
/Volumes/Location/Workers/Bill/2016-03-17_Bill_PC/DOCS/1998816.doc
/Volumes/Location/Workers/Andrew/2015-09-17_Andrew_PC/DOCS/2130419.doc
/Volumes/Location/Workers/Andrew/2015-08-12_Andrew_PC/DOCS/3177109.doc
/Volumes/Location/Workers/Charlie/2015-07-06_Charlie_PC/DOCS/4744128.doc
【问题讨论】:
-
你有什么尝试吗?
-
如果您的最终目标是查找重复项,则无需排序即可完成
-
通常的想法是通过为每个文件生成一个 MD5 校验和并通过
sort | uniq -d运行它们以查找重复的内容,而不考虑文件名。 -
在大多数操作中我使用 sort | uniq -d 但这不会排列列表,以便文件名部分是排序的主要项目。通过将文件名作为排序的主要元素,我可以发现我们在多个 Worker 中有重复的文件名。目标是一个没有任何重复文件名的文件夹树,无论路径如何。 90,000 多个文件的 MD5 计算可能需要一段时间。我最初尝试使用 awk 和 grep。 awk 不喜欢大文件列表。
-
Awk did not like the large file list- 这不是原因,因为awk可以处理非常大的文件。可能是您将整个文件数据存储在内存中。