-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. 先に追加された最初のフィールドは、2 番目に削除され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 に答える