Shell

ls:按時間戳排序(反轉),如果時間戳與名稱相同(不反轉)

  • October 22, 2018

我想通過反轉時間戳來訂購目錄,但如果時間戳是按名稱相同的順序(不反轉)

使用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

引用自:https://unix.stackexchange.com/questions/477012