然後使用-t
指示字段分隔符並將其設置爲_
:
sort -t'_' -k3
見排序,如果他們的文件名的例子在一個文件中。我用-n
爲數字排序,並-r
爲相反的順序:
$ sort -t'_' -nk3 file
MyFile_dfgfdklm_19990101.tar.gz
MyFile_4fg5d6_20100301.csv
MyFile_fdfdsf_20140326.txt
$ sort -t'_' -rnk3 file
MyFile_fdfdsf_20140326.txt
MyFile_4fg5d6_20100301.csv
MyFile_dfgfdklm_19990101.tar.gz
從man sort
:
-t,--field分離器SEP =
使用SEP代替非空白到空白轉變
-n,--numeric排序
比較根據字符串數值
-r,--reverse
反轉比較
的結果
更新
謝謝你的回答。這是完美的。但出於好奇,如果 我有一個未知數量的分隔符,但日期總是在最後一個「_」分隔符 之後。 MyFile_abc_def _... 20140326.txt sort -t'' -nk ???文件 - user3464809
你可以欺騙它一點點:打印最後一個字段,排序,然後將其刪除。
awk -F_ '{print $NF, $0}' a | sort | cut -d'_' -f2-
看到一個例子:
$ cat a
MyFile_fdfdsf_20140326.txt
MyFile_4fg5d6_20100301.csv
MyFile_dfgfdklm_19990101.tar.gz
MyFile_dfgfdklm_asdf_asdfsadfas_19940101.tar.gz
MyFile_dfgfdklm_asdf_asdfsadfas_29990101.tar.gz
$ awk -F_ '{print $NF, $0}' a | sort | cut -d'_' -f2-
dfgfdklm_asdf_asdfsadfas_19940101.tar.gz
dfgfdklm_19990101.tar.gz
4fg5d6_20100301.csv
fdfdsf_20140326.txt
dfgfdklm_asdf_asdfsadfas_29990101.tar.gz
是始終之後的第二'日期_'? – fedorqui
謝謝你的回答。這是完美的。 但出於好奇,如果我有一個未知數的「\ _」分隔符,但該日期總是在最後一個「\ _」分隔符之後。 MyFile_abc_def _..._ 20140326.txt sort -t'_'-nk ???文件 – user3464809
查看我更新的答案。我介紹了這個具體案例。另外,它解決了你的問題?既然你是新來的,如果你的問題已經解決了,請不要忘記標記答案。您可以點擊答案旁邊的複選標記將其從空心切換爲綠色。如果您有任何疑問,請參閱[幫助中心>提問](http://stackoverflow.com/helpcenter/someone-answers)! – fedorqui