Bu, çeşitli platformlarda standart olmayan özelliklerin klasik bir örneği gibi görünüyor.Saniyede Dosya Değiştirme Süresinin En İyi Yolu
Basitçe, bir dosyanın değiştirilen zamanını saniyeler içinde bir unix zaman damgası olarak almak için evrensel (veya en azından yaygın olarak desteklenen) bir yöntem istiyorum.
Şimdi bunu stat
ile yapmanın çeşitli yollarını biliyorum, ancak çoğu platforma özeldir; Örneğin, stat -c %Y $file
bazıları için çalışır, ancak bunun yerine stat -f %m $file
kullanan OS X (ve muhtemelen diğer FreeBSD sistemleri) üzerinde çalışmayacaktır.
Aynı şekilde, bazı platformlar, date -r $file +%s
destekleyen ancak OS X/FreeBSD tekrar yapar değil -r
seçenek sadece unix zaman damgası yerine diğer platformlarda olduğu gibi referans dosyası seçeneğini almak için +%s
kullanarak alternatif bir gibi görünüyor.
Tanıdığım diğer bir alternatif ise -printf
seçeneği ile find
kullanmaktır, ancak yine de bu yaygın olarak desteklenmemektedir. Bildiğim son yöntem ls
'u ayrıştırmaktır, ki yapmaktan hoş olmayan bir şey olmanın yanı sıra, (ya da en azından) güvenilebilir olduğuna inandığım bir şey de değil.
Bir dosyanın değiştirilme zamanını almak için daha uyumlu bir yöntem var mı? Şu anda sadece stat
'un farklı varyasyonlarını bir komut dosyasına atıyorum ve bir sıfır durumuyla çıkana kadar bunları çalıştırıyorum, ancak bu, gelecekteki başarılı komutu ilk önce çalıştırmamıza rağmen ideal olmaktan uzaktır.
; amaç, hemen hemen tüm unix-y işletim sistemlerinde çalışması gereken basit bir kabuk betiğine sahip olmaktır. Sorun, Python veya Perl'i içermeyen NAS kutuları gibi ortamları da içermem gerekiyor. Bunu bir kabukta yapmanın daha iyi bir yolu yok mu? – Haravikk