stat: bir dosyanın değişiklik zaman damgası


11

stat -f %m .bashrcOsx üzerinde benim .bashrc benim değişiklik zamanı almak için kullanın . Ama aynı komutu ubuntu üzerinde çalıştırdığımda hata veriyor:

stat: cannot read file system information for %m': No such file or directory

Bunu başarmanın uyumlu bir yolu var mı?

Yanıtlar:


12

Ubuntu GNU coreutils statkullanırken OSX BSD varyantını kullanır. Ubuntu'da komut biraz farklı:

stat -c %Y .bashrc

Gönderen man stat:

   -c  --format=FORMAT
          use the specified FORMAT instead of the default; output  a  new
          line after each use of FORMAT

ve:

   %Y     time of last data modification, seconds since Epoch

İşletim sisteminden bağımsız olarak bunları çalıştırmak için taşınabilir bir yol istiyorsanız, bunu yapmanın birkaç yolu vardır. Ben bir kez uygun parametreleri bir kez bir değişken ayarlamak istiyorsunuz:

if uname | grep -q "Darwin"; then
    mod_time_fmt="-f %m"
else
    mod_time_fmt="-c %Y"
fi

Ve sonra bu değeri statgerektiğinde komutta kullanın:

stat $mod_time_fmt .bashrc

7

"Bu" ile ne demek istediğine bağlı. Bir dosyayı almak için taşınabilir bir yolu var olup olmadığını soruyorsanız var mtimeolan stat(1)zaman hayır, yoktur. BSD stat(1)Linux'tan farklıdır stat(1).

Bir dosyayı almanın taşınabilir bir yolu olup olmadığını soruyorsanız mtime, evet, bunu aşağıdakilerle yapabilirsiniz perl(1):

perl -e 'print +(stat $ARGV[0])[9], "\n"' file

6

OSX ve Ubuntu'nun sürümlerinde statOSX'in statvarsayılan olarak çıkış vermeyi ve Linux'un statbazı çemberlerin atlanması gerektiğini belirten bazı farklılıklar olduğundan . Bir olasılık sadece OSX üzerinde bir takma ad kullanmak stat her ikisinde de aynı şeyi yapacaktı.

statOSX'te ayrıntılı çıktıyı zorlamak için bir takma ad ayarlamanın sakıncası alias stat="stat -x"yoksa perl'e ihtiyacınız yoktur.

stat .bashrc| grep Modify Ubuntu altında ihtiyacınız olan tek şey. takma adı yukarıdaki gibi ayarlarsanız OSX altında da çalışır

Ubuntu 14.04.5 Örneği Hemen hemen aynı sonuçlar Ubuntu 16.04'ten elde edilebilir

   stat .bashrc| grep Modify
Modify: 2014-03-30 23:14:47.658210121 -0500

İstediğiniz tek şey zaman damgası ise Modify:, geri kalanını şeritleyebilir ve

stat .bashrc| grep Modify | cut -c 9-

Kaynaklar:

https://ss64.com/osx/stat.html

OSX'de stat çıkışı


1
Ben OSX -x seçeneği eksik düşünüyorum.
fushupinnanren

@Derry haklısın, ne yazık ki OSX bitleri için OSX bitleri için araştırma yapmak zorundayım. Cevap düzeltildi.
Elder Geek
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.