回答:
それはls
実装に大きく依存します。GNU / Linuxシステムで見つかった4つのうち、次のものがここにあります。
$ touch a; touch c; touch b; stat -c %y a c b
2018-01-10 12:52:21.367640342 +0000
2018-01-10 12:52:21.371640148 +0000
2018-01-10 12:52:21.375639952 +0000
GNUls
プロジェクトからのGNU(GNU coreutilsコレクションから)。これは、Debian(LinuxまたはkFreeBSDカーネル)、Cygwin、FedoraなどのGNUシステムで一般的に見られるものです。
$ gnu-ls -rt
a c b
家宝Toolchest、OpenSolarisのツールのポート:ls
$ heirloom-ls -rt
a b c
AT&Tのオープンソースのコレクション、多分に建てられました。かなりの数の豪華な拡張機能を持つ別のもの:ls
ksh93
$ ast-ls -rt
a c b
$ PATH=/opt/ast/bin:$PATH ksh93 -c 'type ls; ls -rt'
ls is a shell builtin version of /opt/ast/bin/ls
a c b
busybox(ほとんどの(一般的に埋め込まれた)Linuxベースのシステムで見つかった(または派生物)):
$ busybox ls -rt
c b a
したがって、それらのうち、GNUとast ls
は小数部分を考慮します。その他は、同じ秒以内に最後に変更されたファイルの字句比較にフォールバックします。のみのbusyboxのls
名誉-r
があります。
私のテストでは、FreeBSD ls
は1秒未満の精度もサポートしています(VFSレベルで有効になっている場合、vfs.timestamp_precision
sysctlを参照)。
zsh
のom
グロブ(グロブ修飾子を使用して、変更時に順序付けOm
、逆の順序で)にも全時間がかかります。
$ echo *(Om)
a c b
GNUのls
実装に関しては、running ls -l
はファイルをアルファベット順に並べ替え、ls -lt
ファイルを変更時刻順に、基本となるファイルシステムでサポートされる最大の精度で並べ替えます。--full-time
オプションを使用してこれを確認できます。
だから、あなたの質問に答えるには、はい、できる限り拡張しますが、-t
それを使用する場合(そうでない場合はデフォルトでアルファベット順)で、それをサポートする実装を使用している場合(詳細については、
ステファンの回答を参照)。たとえばext4
、必要なタイムスタンプデータを格納するのに十分な大きさのiノードを指定すると、ナノ秒の精度をサポートできます。
はい、そうです。
テストするには、わずかな時間差で2つのファイルを作成します。
$ touch aa; sleep 0.2; touch bb
変更時間を確認します。
$ stat -c %y bb aa
2018-01-07 20:51:19.364248042 0000
2018-01-07 20:51:19.072248226 0000
リストはそのような違いを使用します:
$ ls -lt aa bb
-rw-r--r-- 1 user user 0 Jan 7 20:51 bb
-rw-r--r-- 1 user user 0 Jan 7 20:51 aa
--full-time
違いは明らかであろう。
$ ls -lt --full-time aa bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.364248042 0000 bb
-rw-r--r-- 1 user user 0 2018-01-07 20:51:19.072248226 0000 aa
bb
と信じていますaa
。