-st doğru mtimes veya sadece saniye kadar yaklaşık mtimes takip edecek?


10

ls -lsadece saniyeye kadar olan dosyaların değişiklik zaman damgalarını gösterir. İki dosya saniyeye kadar aynı zaman damgasına sahipse, ancak tam olarak aynı anda değiştirilmemişse ls -lt, dosyaları doğru mtimes sırasına göre veya yalnızca saniyeye kadar yaklaşık mtimes sırasına göre sıralar (ve bu nedenle dosyalar arasındaki sıra keyfi)?

Yanıtlar:


17

Bu büyük ölçüde lsuygulamaya bağlıdır . Burada bir GNU / Linux sisteminde bulunan 4 taneden:

$ 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 projesinden (GNU coreutils koleksiyonundan). Bu genellikle Debian (Linux veya kFreeBSD çekirdekleri), Cygwin veya Fedora gibi GNU sistemlerinde bulunan sistemdir.

    $ gnu-ls -rt
    a  c  b
    
  • lsDan Heirloom ToolChest , OpenSolaris araçları port:

    $ heirloom-ls -rt
    a  b  c
    
  • lsDan AT & T Açık Kaynak koleksiyonunda , muhtemelen yerleşik ksh93. Birkaç tane süslü uzantıya sahip başka bir tane:

    $ 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 (çoğu (genellikle gömülü) Linux tabanlı sistemlerde (veya bir türev olarak) bulunur:

    $ busybox ls -rt
    c  b  a
    

Bu nedenle, GNU ve ast lskesirli ikinci kısmı düşünüyor. Diğerleri, aynı saniye içinde en son değiştirilen dosyalar için sözcük karşılaştırmasına geri döner. Orada sadece busybox lsonurlandırır -r.

Testlerimde, FreeBSD'ler lsikinci-altı hassasiyeti de destekler (VFS düzeyinde etkinleştirilmeleri koşuluyla, bkz. vfs.timestamp_precisionSysctl).

zsh's omglob ( glob niteleyici ile değişiklik zamanı, Omters sipariş için) de tam zamanı alır:

$ echo *(Om)
a c b

[ file1 -nt file2 ]desteklendiğinde, genellikle ikinci-altı ayrıntı düzeyini de destekler .


1
GNU olmayan araçlar POSIX'i ihlal ediyor mu veya sıralama için yuvarlama belirtiyor mu?
Kevin

2
Ast-ls nedir?
Random832

@ Random832, bkz. Düzenleme.
Stéphane Chazelas

2
@Kevin, spesifikasyonu okuduğumdan beri, bu konuda uyumlu değiller . AFAICT, spesifikasyonda, ikinci bölümün göz ardı edilmesine izin veren hiçbir şey yoktur ve POSIX, kesin zaman damgalarını almak için açık bir API sağlar.
Stéphane Chazelas

1
@ikkachu, haklısın. Bunu fark etmemiştim. bkz. düzenleme. Bu ast için sonucu değiştirir.
Stéphane Chazelas

4

GNU'nun lsuygulanmasıyla ilgili olarak , çalıştırma ls -l, dosyaları alfabetik sırayla sıralar ve ls -ltdosyaları, en yeni olan, temel dosya sistemi tarafından desteklenen en yüksek doğrulukta değiştirme zamanı sırasına göre sıralar. Bu --full-timeseçeneği kullanarak kontrol edebilirsiniz .

Yani, sorunuzu cevaplamak için, evet, mümkün olan en geniş ölçüde, ancak yalnızca kullandığınızda -t(aksi takdirde, varsayılan olarak alfabetik olacaktır) ve bunu destekleyen bir uygulama kullanıyorsanız ( daha fazla ayrıntı için Stéphane'nin cevabına bakın). Örneğin ext4, gerekli zaman damgası verilerini depolamak için yeterince büyük inode verildiğinde nanosaniye hassasiyetini destekleyebilir.


2
Cevabınıza sadece GNU l'lerden bahsettiğini eklemelisiniz. Farklı davranabilecek başka uygulamalar da vardır.
Roland Illig

@RolandIllig ekledi
Joe

1

çıkışını karşılaştırırsanız

ls -lat

ve

ls -lat --full-time

orada sıralama hakkında keyfi bir şey yoktur.


1

Evet, olacak.

Test etmek için küçük bir zaman farkıyla iki dosya oluşturun:

$ touch aa; sleep 0.2; touch bb

Değişiklik sürelerini kontrol edin:

$ stat -c %y bb aa
2018-01-07 20:51:19.364248042 0000
2018-01-07 20:51:19.072248226 0000

Liste bu farkı kullanacaktır:

$ 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

İle --full-timefarkı net olacak.

$ 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

Son blokta, inanıyorum ki geriye bbve aageriye.
Alex
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.