-3

我有一个文件,其中包含要从字符串末尾开始排序的文件路径和文件名。

我的文件包含如下列表:

/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
4

3 回答 3

5

这是一种方法:

sed -e 's|^.*/\(.*\)$|\1\t\0|' list.txt | sort | cut -f 2-

这用于sed在每行的开头插入文件名的副本,以便我们可以使用sort. 然后我们删除我们在第一步中添加的东西。

于 2016-09-23T11:32:08.800 回答
2

这应该有效:

sort -t/ -k7 input_file
于 2016-09-23T11:38:30.600 回答
1

这将根据以 . 分隔的动态最后一个字段进行排序/。首先,它将最后一个字段附加到行首,然后sort. 前面附加的第一个字段被 second 删除awk

awk -F'/' '{ $0= $NF " " $0;print $0 |"sort -k1"}' fil  |awk '{print $2}'
/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/2016-07-06_Charlie_PC/DOCS/4744123.doc
于 2016-09-23T11:31:29.207 回答