Shell
ls:按時間戳排序(反轉),如果時間戳與名稱相同(不反轉)
我想通過反轉時間戳來訂購目錄,但如果時間戳是按名稱相同的順序(不反轉)
使用
ls -tr
如果兩個文件按名稱具有相同的時間戳順序但處於相反模式
你可以使用這樣的東西
stat --printf "%Y %n\0" * | sort -z -k1,1n -k2 # or quoted file names: stat --printf "%Y %N\0" * | sort -z -k1,1n -k2
- 第一個排序標準是欄位 1(
%Y
-> 時間戳(精度:秒)),數字排序。- 不是用“最新的優先
ls -t
”排序,這已經是相反的,sort -n
但你可以用它-k1,1nr
來改變它。- 第二個排序標準是從欄位 2 到行尾的所有內容(
%n
或%N
–> 文件名)- 使用零分隔符來避免文件名出現問題,包括
\n
.然後使用
tr
和/或修復您喜歡的格式sed
:... | tr '\0' '\n' # or just print the filenames: ... | sed 's/^[0-9]* //;s/$/\n/;s/\x0[0-9]* /\n/g'
輸出:
$ touch d; sleep 1; touch b c; sleep 1; touch a; $ ls -tr d c b a $ stat --printf "%Y %n\0" * | sort -z -k1,1n -k2 | sed 's/^[0-9]* //;s/$/\n/;s/\x0[0-9]* / /g' d b c a