2016-09-23 4 views
-3

ファイルパスとファイル名が含まれていて、文字列の最後からソートしたいファイルがあります。bash各行の終わりからリストをソート

私のファイルには、以下のようにリストが含まれています:

/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 
+1

あなたは何を試してみましたか? – Inian

+0

最終的な目的が重複を見つけることであれば、並べ替えを行うことなく行うことができます – Sundeep

+0

重複するファイルをチェックするには、それぞれMD5チェックサムを生成し、 'sort | uniq -d'を実行すると、ファイル名に関係なく重複したコンテンツが検索されます。 –

答えて

2

はここでこれを行う方法です:

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

これは、我々がsortでリストを並べ替えることができるように、各行の先頭にファイル名のコピーを挿入するためにsedを使用しています。次に、最初のステップで追加したものを削除します。これは動作するはず

+2

無礼はしませんが、作者の試行を確認せずに質問に答える理由は何ですか?基本的に有料でフリーコードを提供するだけです。 – Inian

+0

チャームのように働いた!どうもありがとう! – QuePID

+1

@Inian:私たちは、OPがどのような努力をしているかにかかわらず、無料でコードとアドバイスを無料で提供しています。少なくとも、作者が自分の試みを投稿したときでさえ、これまでに支払ったことはないと思います。 –

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 
1

sort -t/ -k7 input_file 
+1

すべてのパスが同じ数のセグメントを持つ場合のみ。あなたが '/ Volumes/Location/Jim/2016-09-23_Jim_PC/DOCS/Personal/1234.doc'を実行すると、それはひどく失敗するでしょう。これは、OPの投稿サンプルデータで動作しますが、それは良い一般的な解決策ではありません。 –

+0

@ JimMischel:OPは一般的な解決策を求めていませんでした。私は[KISS原則](https://en.wikipedia.org/wiki/KISS_principle)に従うことを好む。 – mouviciel

関連する問題