linux / shell: फ़ाइल के संशोधित टाइमस्टैम्प को अपेक्षाकृत बदल दें?


20

मेरा कैमरा उन फाइलों पर टाइमस्टैम्प की तरह IMG_1234.JPGऔर फाइलों का निर्माण करता है MVI_1234.AVI। दुर्भाग्य से समय ठीक से सेट नहीं किया गया था और टाइमस्टैम्प बंद हैं।

मैं डिस्क पर फ़ाइल का टाइमस्टैम्प सेट करना चाहूंगा। (EXIF डेटा नहीं)।

प्रस्तावित एल्गोरिथ्म:

1 read file's modify date
2 add delta, i.e. hhmmss (preferred: change timezone)
3 write new timestamp

क्या इसे करने का कोई आसान तरीका है? हो सकता है कि कोई युग (समय से सेकंड) का उपयोग करके गणना को सरल कर सकता है और एक शेल स्क्रिप्ट को कोड़ा कर सकता है।


कीवर्ड माइम है। हालाँकि, मुझे अभी तक कोई समाधान नहीं मिला है, क्योंकि मुझे फ़ाइल के माइम के
सूचकांक

जवाबों:


38

touch यह कर सकता है:

 $ ls -l something
-rw-rw-r-- 1 tgs tgs 0 2010-03-22 16:03 something
 $ touch -r something -d '-1 day' something 
 $ ls -l something 
-rw-rw-r-- 1 tgs tgs 0 2010-03-21 16:03 something

http://linux.about.com/library/cmd/blcmdl_touch.htm

माइम को बदलने के लिए, जोड़ें --time=mtime


हाँ, लेकिन यह आपके मौजूदा सिस्टम समय के सापेक्ष है, न कि फ़ाइल का .. धन्यवाद, हालांकि ..
सूचकांक

1
जब मैंने पहली बार उत्तर दिया, हां, लेकिन मैंने उत्तर को संपादित किया। जब आप -r fileविकल्प का उपयोग करते हैं , तो यह उस फाइल के सापेक्ष हो जाता है। इसलिए यदि आपके पास समय है उसी फ़ाइल के सापेक्ष हो जिसमें आप हेरफेर कर रहे हैं, तो आपको वही मिलेगा जो आप चाहते हैं।
Rescdsk

शानदार, धन्यवाद। बिल्कुल वही, जिसकी मुझे तलाश है।
आर्टेम रसाकोवस्की

@rescdsk, केवल जिज्ञासा से बाहर, यह परिवर्तन फ़ाइल के फोरेंसिक विश्लेषण को कैसे प्रभावित करेगा? यदि आपने एक फ़ाइल को संशोधित किया है, लेकिन फिर इसकी संशोधित तिथि को पिछले मान पर सेट करें, तो क्या यह इनकोड या अन्य फाइल सिस्टम मेटाडेटा पर पता लगाने योग्य होगा? क्या इस विश्लेषण पर प्रभाव पड़ेगा?
फ्रैंक थॉमस

@FrankThomas, क्षमा करें, मुझे कोई सुराग नहीं मिला है!
18

11

उपरोक्त संयोजन, यदि AM / PM गलत था ...

फ़ाइल समय टिकटों को ठीक करें:

#!/bin/sh
for i in all/*; do
  touch -r "$i" -d '-12 hour' "$i"
done

फिर सही समय टिकट के लिए jpg फ़ाइलों में EXIF ​​जानकारी अपडेट करें:

$ jhead -dsft *.jpg

अपने कैमरे में समय सेटिंग को ठीक करने के लिए मत भूलना।


2

उपनिर्देशिका में सभी फ़ाइलों पर पुनरावृत्त सभी: सेकंड में फ़ाइलों को युग / यूनिक्स समय प्राप्त करने के लिए स्टेट का उपयोग करें, मार्स के लिए नई तारीख के रूप में पार्स को छूने दें और फाइल करने के लिए लिखें

#!/bin/sh
for i in all/*; do
  touch -m -d "$(stat -c %y "$i") + 3600 sec" "$i"
done

एक पायथनियन दृष्टिकोण के लिए /programming/1158076/implement-touch-use-pyhon देखें


बस स्पष्ट करने के लिए, इसका मतलब यह है कि कॉरटाइल की तारीख पार्सर न केवल सापेक्ष, अर्थ बार स्वीकार करता है, बल्कि वास्तव में गणना कर सकता है! बस इसे इंगित करते हुए जैसा कि मैंने उस जानकारी को प्रलेखन में नहीं पाया है ( gnu.org/software/coreutils/manual/… ) [यह वास्तव में वहां है: "सापेक्ष आइटम एक तिथि (या वर्तमान तिथि यदि कोई नहीं) को आगे या पीछे समायोजित करते हैं। सापेक्ष वस्तुओं का प्रभाव जमा होता है। "]
सूचकांक

2

मैं ओएस एक्स में एक ही काम कर रहा हूं, और स्पर्श का सिंटैक्स यहां थोड़ा भिन्न होता है।

मै इस्तेमाल कर रहा हूँ:

touch -r "filename" -A '013007' "filename"

यह मूल संशोधित समय के सापेक्ष + 1 घंटे 30 मिनट 7 सेकंड को समायोजित करेगा। '-013007'समय को वापस लाने के लिए।


एक साइड नोट: कुछ भी नहीं से बेहतर है, यह वाक्यविन्यास स्क्रिप्टिंग के लिए एक बुरा सपना है।
टूमैस्सालो

ठीक यही मैं देख रहा था (आरटीएफएम: डी के लिए बहुत आलसी)। धन्यवाद!
मिशेल डल'गाटा

1

लिनक्स, अंतिम संशोधित टाइमस्टैम्प को बदलने के लिए स्पर्श का उपयोग कर रहा है:

अब टाइमस्टैम्प के साथ एक फ़ाइल बनाएँ:

el@apollo:~$ touch myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Aug 22 09:25 myfile.txt

टाइमस्टैम्प को 2 घंटे पहले बदलें:

el@apollo:~$ touch -d "2 hours ago" myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Aug 22 07:25 myfile.txt

200 घंटे पहले होने वाले टाइमस्टैम्प को बदलें:

el@apollo:~$ touch -d "200 hours ago" myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Aug 14 01:25 myfile.txt

30 दिन पहले होने वाली टाइमस्टैम्प को बदलें:

el@apollo:~$ touch -d "30 days ago" myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Jul 23 09:25 myfile.txt
el@apollo:~$

Shenanigans के लिए, भविष्य में अंतिम संशोधित तिथि निर्धारित करें:

el@apollo:~$ touch -d "-400000 days ago" myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Oct 21  3012 myfile.txt

जाहिर है, हम पार्टी की तरह यह आज रात 3012 है।


पिछले "भविष्य" उदाहरण के लिए, माइनस ( -) स्पर्श को अतीत में 400,000 दिन जाने के लिए नहीं कहता है , और फिर भी यह भविष्य में समाप्त होता है? या रुको, क्या आप स्पर्श को ऋणात्मक तारीख से घटाकर बता रहे हैं, शून्य से + पहले = भविष्य ...? यार
मेटी

0

जेर का उपयोग करें:

http://www.sentex.net/~mwandel/jhead/usage.html

Exif हैडर में संग्रहीत समय को h: mm से पीछे या आगे की तरफ समायोजित करें। कैमरे पर सेट किए गए गलत समय के साथ तस्वीरें लेते समय उपयोगी, जैसे कि समय क्षेत्र में यात्रा करने के बाद, या जब दिन की बचत का समय बदल गया है।


टिप के लिए धन्यवाद, यह exif और exifTool के समान है और digiKam के "एडजस्ट डेट एंड टाइम" फीचर की तरह है - लेकिन मैं फाइल की सिस्टम तिथि को संशोधित करना चाहूंगा। एक और समस्या यह है कि मेरा स्मार्ट ओएस मक्खी पर स्थानीय समय को परिवर्तित करने के लिए लगता है और डीएसटी ने एक समय क्षेत्र में लात मार दी है :-)
सूचकांक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.