リバースタイムスタンプに基づいてディレクトリをソートしたいがタイムスタンプの名前の順序が同じ場合(リバースではない)
ls -tr
両方のファイルの名前によるタイムスタンプの順序は同じですが、モードが逆の場合は、次のようにします。
答え1
このようなものを使用できます
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
- >タイムスタンプ(精度:秒))です。N数値の並べ替え。 - いいえアル字型「最新順」と似ており、
ls -t
これはすでに正反対ですが、これを変更するsort -n
ために使用できます-k1,1nr
。 - 2番目のソート基準は、フィールド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