Bir dosyanın “Oluşturma Tarihi” ve “Son Değişiklik” niteliklerini başka bir dosyanınkilere değiştirme


40

15 dosyadan bir birleştirme pcap dosyası oluşturmak için birleştirme kapağı kullanıyorum. Birleştirilmiş dosya için, adı 15 dosyanın ilk adıyla değiştirdim. Ancak, birleştirilmiş dosyanın "Oluşturma Tarihi" ve "Son Değiştirme Tarihi" gibi özniteliklerini de birincisininkiyle değiştirmek istiyorum. Bunu yapmak için zaten var mı?

FILES_dcn=($(find  $dir_dcn -maxdepth 1 -type f -name "*.pcap"  -print0 | xargs -0 ls -lt | tail -15 | awk '{print $9}'))
TAG1_dcn=$(basename "${FILES_dcn[14]}" | sed 's/.pcap//')
mergecap -w  "${dir_dcn}"/merge_dcn.pcap "${FILES_dcn[@]}"
mv  "${dir_dcn}"/merge_dcn.pcap  "${dir_dcn}"/"${TAG1_dcn}".pcap

Birleştirilmiş dosyalara bir samba sunucusu (Ubuntu) üzerinden erişmeye çalışıyorum. Böylece bir ayıklayıcı işlevi, dosyaları D klasörüne otomatik olarak ayıklayabilir. Ancak birleştirilmiş dosya için oluşturulan tarih değişeceğinden çıkartma başarısız olur. Bunu düzeltmek için yine de var mı?

Yanıtlar:


77

Sen kullanabilirsiniz touchbirlikte komutu -rbir dosyaya başka dosyanın özelliklerini uygulamak için anahtar.

NOT: Unix'te oluşturma tarihi diye bir şey yoktur, yalnızca erişim, değişiklik ve değişiklik yapılabilir. Bu U&L Soru-Cevap bölümüne bakınız: daha fazla ayrıntı için verilen dosyanın yaşını alın .

$ touch -r goldenfile newfile

Örnek

Örneğin, burada goldenfilebazı keyfi zaman damgası ile oluşturulmuş bir amaç var .

$ touch -d 20120101 goldenfile
$ ls -l goldenfile 
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

Şimdi yeni bir dosya hazırlıyorum:

$ touch newfile
$ ls -l newfile 
-rw-rw-r--. 1 saml saml 0 Mar  7 09:06 newfile

Şimdi goldenfileözniteliklerini uygulayın newfile.

$ touch -r goldenfile newfile 
$ ls -l goldenfile newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

Şimdi newfileaynı özelliklere sahip.

Samba ile değiştir

Bunu, bir Thecus N12000 NAS'a bağlı olan 1.16.3-2 sürümünü içeren Fedora 19 dizüstü bilgisayarımı kullanarak yapabileceğimi doğruladım (değiştirilmiş bir CentOS 5.x sürümü kullanıyor).

Yukarıda belirttiğim gibi bir dosyaya dokundum ve açıkladığım gibi çalıştı. Sorununuz muhtemelen, kullanılan montaj seçeneklerinde ya da belirli zaman özelliklerinin izlenmesini engellemekte olan ya da belki de bu hatalardan biriyle ilgili olan bir problemdir:


@JishnuUNair - Samba paylaşımının nasıl monte edildiğini görmek için kontrol edebilir misiniz (hangi seçeneklerle)? Bunları genellikle mountkomuttan alabilir ve erişmekte olduğunuz paylaşıma bakabilirsiniz. Sadece bir tahmin ama muhtemelen monte ediliyor FUSE dosya sistemi olarak gvfs kullanın.
slm

1
Artık birçok dosya sistemi bir dosya oluşturma süresini desteklemektedir. Ext4 için, içinden görüntüleyebilir / değiştirebilirsiniz (bunun debugfskök ayrıcalıklarına ihtiyacı vardır ve burada kullanımı yoktur). Bu soruya bakın - unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4
Graeme

@Graeme - Evet , sohbet odasında stap : unix.stackexchange.com/questions/91197/… adresini kullanarak benzer bir yöntemi kullandım .
slm

1
Linux bir yaratılış zamanını desteklemese de, bir Samba payı olabilir. Nasıl kurduğuna bağlı olarak (ve dosya sisteminde xattr desteği) Samba, bazı zaman damgalarını Linux xattr'lerde saklayabiliyor. Bu, altta yatan dosya sisteminin geçerli (değiştirilebilir) bir oluşturma zamanı bildirmediği gibi şeyler yapabileceği anlamına gelir. Üzgünüz, bunun nasıl çalıştığıyla ilgili iyi bir bağlantı bulamadım.
Peter

1
Aslında çoğu Linux dosya sistemi (örneğin, ext4) şimdi oluşturma tarihini destekliyor ve Linux 4.11'in statx()onu almak için bir çağrı yapacak. En sonunda.
Jez,

36

En kolay yol - değiştirilmiş erişilenler aynı olacaktır:

touch -a -m -t 201512180130.09 fileName.ext

Nerede:

-a = accessed
-m = modified
-t  = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format

Kullanmak istiyorsanız NOWsadece tve zaman damgasını bırakın

Hepsinin aynı olduğunu doğrulamak için: stat fileName.ext

Bakınız: dokunma adam


5
Her nasılsa koyarak ubuntu 14.04 üzerinde -adaha önce -merişim süresini değiştirmez ... yani, sonra koyun:touch -m -a -t....
Jadeye

5
-d time_stringbelki daha kolay -t: -d "2004-02-29 16:21:42"
yurenchen 14:17
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.