किसी फ़ाइल की "डेट क्रिएटेड" और "लास्ट मोडिफाइड" विशेषताओं को बदलकर दूसरी फाइल के लिए


40

मैं 15 फ़ाइलों से मर्ज pcap फ़ाइल बनाने के लिए मर्ज कैप का उपयोग कर रहा हूँ। मर्ज की गई फ़ाइल के लिए, मैंने नाम को पहले 15 फ़ाइलों में बदल दिया है। लेकिन मैं "डेट क्रिएटेड" और "लास्ट मोडिफाइड" जैसी मर्ज की गई फ़ाइल की विशेषताओं को भी पहले वाले में बदलना चाहूंगा। क्या इसे करने का कोई तरीका है?

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

मैं एक सांबा सर्वर (उबंटू) पर मर्ज की गई फ़ाइलों तक पहुंचने का प्रयास करता हूं। ताकि एक एक्सट्रैक्टर फ़ंक्शन डी फ़ोल्डर में फ़ाइलों को ऑटो एक्सट्रैक्ट एक्सेस कर सके। लेकिन मर्ज किए गए फ़ाइल के लिए बनाई गई तारीख बदल जाएगी के रूप में निष्कर्षण विफल रहता है। क्या इसको ठीक करने का कोई तरीका है?

जवाबों:


77

आप फ़ाइल में किसी अन्य फ़ाइल की विशेषताओं को लागू करने के touchलिए -rस्विच के साथ कमांड का उपयोग कर सकते हैं ।

नोट: यूनिक्स में निर्माण तिथि जैसी कोई चीज नहीं है, केवल एक्सेस, संशोधित और परिवर्तन हैं। इस U & L Q & A शीर्षक को देखें: अधिक जानकारी के लिए दिए गए फ़ाइल की आयु प्राप्त करें।

$ touch -r goldenfile newfile

उदाहरण

उदाहरण के उद्देश्यों के लिए यहां goldenfileकुछ मनमानी टाइमस्टैम्प के साथ बनाया गया था।

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

अब मैं कुछ नई फ़ाइल बनाता हूँ:

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

अब लागू goldenfileकरने के लिए विशेषताएँ 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

अब newfileएक ही गुण है।

सांबा के माध्यम से संशोधित करें

मैंने अभी पुष्टि की है कि मैं अपने फेडोरा 19 लैपटॉप का उपयोग करने में सक्षम हूं, जिसमें थेकस एन 12000 एनएएस से जुड़ा संस्करण 1.16.3-2 शामिल है (सेंटोस 5. एक्स के संशोधित संस्करण का उपयोग करता है)।

जैसा कि मैंने ऊपर उल्लेख किया है, मैं एक फ़ाइल को छूने में सक्षम था और जैसा मैंने बताया था, यह काम किया। आपके समस्या के कारण या तो बढ़ते विकल्पों के साथ एक समस्या है, जो निश्चित समय विशेषताओं की ट्रैकिंग को छोड़ सकता है, या शायद यह इन बगों में से एक से संबंधित है:


@ जिष्णुनुयर - क्या आप यह देखने के लिए जांच कर सकते हैं कि सांबा शेयर कैसे (किन विकल्पों के साथ) मुहिम चला रहा है? आप आमतौर पर इन्हें mountकमांड से प्राप्त कर सकते हैं और फिर उस शेयर की तलाश कर सकते हैं जिसे आप एक्सेस कर रहे हैं। बस एक अनुमान है, लेकिन यह संभावना है कि FUSE फाइल सिस्टम के रूप में gvfs का उपयोग किया जा रहा है।
स्लम

1
बहुत सारे फाइल सिस्टम अब एक फाइल निर्माण समय का समर्थन करते हैं। Ext4 के लिए, आप इसे देख सकते हैं / बदल सकते हैं debugfs(हालाँकि इसके लिए रूट विशेषाधिकारों की आवश्यकता है और इसका कोई उपयोग नहीं है)। यह प्रश्न देखें - unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4
ग्रीम

@Gememe - हाँ, मैं सिर्फ स्टैप का उपयोग करके एक समान विधि संदर्भित करूंगा : चैट में unix.stackexchange.com/questions/91197/…
स्लम

1
जबकि लिनक्स एक निर्माण समय का समर्थन नहीं करता है, एक सांबा शेयर कर सकता है। आप इसे कैसे सेट करते हैं (और फ़ाइल सिस्टम में xattr सपोर्ट) के आधार पर, सांबा में लिनक्स xattrs में कुछ समय के टिकटों को स्टोर करने की क्षमता होती है। इसका मतलब है कि यह उन चीजों को करने में सक्षम हो सकता है जो अंतर्निहित फ़ाइल सिस्टम नहीं कर सकते हैं - जैसे कि एक वैध (परिवर्तनीय) निर्माण समय की रिपोर्ट करें। क्षमा करें, मुझे कोई अच्छा लिंक नहीं मिला कि यह कैसे काम करता है।
पीटर

1
वास्तव में अधिकांश लिनक्स फाइल सिस्टम (उदाहरण के लिए ext4) अब निर्माण तिथि का समर्थन करते हैं, और लिनक्स 4.11 में statx()इसे पुनः प्राप्त करने के लिए एक कॉल होगा। आखिरकार।
Jez

36

सबसे आसान तरीका - संशोधित संशोधित समान होगा:

touch -a -m -t 201512180130.09 fileName.ext

कहा पे:

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

यदि आप NOWसिर्फ ड्रॉप tऔर टाइमस्टैम्प का उपयोग करना चाहते हैं

सत्यापित करने के लिए वे सभी समान हैं: stat fileName.ext

देखें: स्पर्श आदमी


5
किसी तरह ubuntu 14.04 पर डालने -aसे पहले -mपहुँच समय को संशोधित नहीं करता है ... इसे बाद में रखें, ताकि:touch -m -a -t....
Jadeye

5
-d time_stringशायद इससे भी आसान -t: -d "2004-02-29 16:21:42"
yurenchen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.