Bir dosyanın çalışma süresini epoch biçiminde nasıl ayarlarım?


11

Ben biliyorum olsun dönemi formatında bir dosyanın mtime:

stat --format=%Y <file>

Ancak bir dosyanın zamanını epoch biçiminde nasıl ayarlayacağımı anlayamadım . Dokunma (1) kılavuz sayfası yalnızca bir "zaman damgası" değerini (aylar, günler, saatler, dakikalar vb. Kullanan az çok sabit biçim) veya "çoğunlukla serbest biçimli, okunabilir tarih dizesini" kabul ediyor gibi görünür.

Bakmam gereken başka bir yardımcı program var mı?

Teşekkürler.


1
Lütfen daima işletim sisteminizi ekleyin. Çözümler sıklıkla kullanılan İşletim Sistemine bağlıdır. Unix, Linux, BSD, OSX, başka bir şey kullanıyor musunuz? Hangi versiyon?
terdon

Yanıtlar:



1

İle perl:

$ perl -e 'utime (stat($_))[8], time(), $_ for @ARGV' file1 file2 ...

Bu işlem, içindeki tüm dosyaların mtime değerini değiştirecek @ARGV. (stat($_))[8]dosyanın zamanıdır.

utime dosya listesini alabilir, eğer atime değiştirmeyi umursamıyorsanız, deneyebilirsiniz:

 $ perl -e '$t = time(); utime $t, $t, @ARGV' file1 file2 ...

Not

utimeC çalışma zamanı kitaplığına bağlıdır ve dosya sistemi kullanıyor. perldoc -f utimeve 'da daha fazlasını görün perldoc perlport.


0

İle touchGNU coreutils komutunu (yani olmayan gömülü Linux ve Cygwin), bakmak tam manuel dokümantasyonu için (yerel bilgi formatında genellikle mevcuttur) tarih giriş biçimleri . Dönem tarihleri önek ile gösterilir @:

touch -d @1234567890 foo

Bu aynı zamanda BusyBox ile de çalışır (en azından bazı sistemlerde, derleme seçeneklerine bağlı olabilir).

* BSD ile bunu touchtek başınıza yapabileceğinizi düşünmüyorum , ancak dateçağın zamanını touchkabul edilen bir biçime biçimlendirmek için arayabilirsiniz .

touch -d "$(date -r 1234567890 +%Y%m%d%H%M.%S)" foo

POSIX, çağ tarihlerini manipüle etmenin yollarını bilmiyor. Sen edebilirsiniz perl kullanırsanız .

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.