फ़ाइल का निर्माण दिनांक बदलना


62

क्या आप मुझे बता सकते हैं कि मैं शेर में किसी फ़ाइल की निर्माण तिथि कैसे बदल सकता हूँ। मुझे लगता है कि टच-टी कमांड है लेकिन यह शेर में काम नहीं करता है। कुछ लोगों ने एक और तरीके का उल्लेख किया है, लेकिन मुझे लगता है कि उन्होंने आम भाषा के बजाय "कोडर" भाषा में समाधान लिखा है - क्या कोई इसका उत्तर उस तरह से दे पाएगा जो एक आम आदमी निष्पादित कर सकता है?

आपकी मदद के लिए बहुत धन्यवाद।


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

2
FWIW आप "टच-टी" के साथ सही लाइनों पर हैं, लेकिन एच और - के बीच एक जगह है। यह "टच -t" है
डेरेक नाइट

जवाबों:


95

touch -tआम तौर पर केवल संशोधन और पहुंच के समय में परिवर्तन होता है। यह केवल सृजन समय को बदलता है यदि लक्ष्य समय मूल सृजन समय से पहले है।

touch -t 199912312359 file.txt
touch -t $(date -jf %FT%T 1999-12-31T23:59:59 +%Y%m%d%H%M%S) file.txt

SetFile -d हमेशा सृजन का समय बदलता है।

SetFile -d '12/31/1999 23:59:59' file.txt
SetFile -d "$(GetFileInfo -m test.txt)" file.txt

SetFile कमांड लाइन उपकरण पैकेज है जहाँ से डाउनलोड किया जा सकता का हिस्सा है developer.apple.com/downloads या Xcode की वरीयताओं से।


4
-मिशन मॉडिफिकेशन के समय के लिए।
एलिकएल्ज़िन-किलाका

5
योसेमाइट में, प्रारूप का उपयोग करने के लिए मुझे स्पर्श की आवश्यकता है +%Y%m%d%H%M.%S(मिनट और सेकंड के बीच डॉट पर ध्यान दें)
कैलिमो

मैं एक समारोह बुलाया लिखा CpCreationDateमें fish:SetFile -d (GetFileInfo -m $argv[1]) $argv[2]
पास्कल

15

मैक ओएस एक्स में एक फाइल से जुड़े चार अलग-अलग टाइमस्टैम्प्स दिखाई देते हैं। ये timestamps हमेशा एक दूसरे से स्वतंत्र रूप से अपडेट नहीं होते हैं, लेकिन एक देखभाल का एक सा के साथ और के उपयोग के साथ कुछ व्यक्तिगत नियंत्रण हो सकता है touch, SetFileऔर chown(या chmod)। इसे देखने के लिए, आइए प्रयोग करें और कमांड प्रॉम्प्ट से एक नई फ़ाइल बनाएँ #:

# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

सूचीबद्ध पहली तिथि अंतिम पहुंच समय ( atime) है, दूसरी अंतिम संशोधन समय ( mtime) है, तीसरी अंतिम स्थिति परिवर्तन ( ctime) है, चौथी फ़ाइल निर्माण (जन्म Btime), समय है man lstat

पहुँच समय ( atime) को निर्दिष्ट समय उपयोग में संशोधित करने के लिए:

# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

निर्दिष्ट समय के उपयोग के लिए संशोधन समय ( mtime) और फ़ाइल निर्माण का समय ( Btime):

# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt

जाहिरा तौर पर यह स्वचालित रूप ctimeसे वर्तमान सिस्टम समय के लिए अंतिम स्थिति परिवर्तन ( ) के समय को अपडेट करता है!

Btimeदिए गए समय में केवल निर्माण / जन्म ( ) के समय को संशोधित करने के लिए , (जैसा कि ऊपर दूसरों द्वारा प्रस्तावित) का उपयोग करें:

# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

ctimeउदाहरण के लिए वर्तमान सिस्टम समय के उपयोग के लिए केवल अंतिम स्थिति परिवर्तन ( ) के समय को संशोधित करने के लिए:

# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

usernameफ़ाइल का स्वामी कहां है (जैसा कि statउसके द्वारा रिपोर्ट किया गया है ls -l)। यह फ़ाइल के स्वामित्व को परिवर्तित नहीं करता है, लेकिन फ़ाइल के इनकोड तक पहुँचता है और अंतिम स्थिति परिवर्तन के समय के रूप में इसे रिकॉर्ड करता है। दुर्भाग्य से, कंप्यूटर के समय को बदलने के अलावा स्पष्ट रूप से यहां समय निर्दिष्ट करना संभव नहीं है ...

सारांश में, चार टाइमस्टैम्प को स्वतंत्र रूप से बदलने में सक्षम होने के लिए, कोई व्यक्ति (अंतिम 3 के लिए इस क्रम में) का उपयोग कर सकता है:

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [सेट सिस्टम तिथि] chown username <file>[सामान्य सिस्टम दिनांक पर वापस जाएं]

(बेशक, सिस्टम दिनांक को रीसेट करना जोखिम-रहित ऑपरेशन नहीं हो सकता है, आपको चेतावनी दी गई है।)


+1 इस सुपर विस्तृत जवाब के लिए धन्यवाद। इससे मेरे सारे संकट हल हो गए।
गोविंद राय

13

touchलायन में कमांड-लाइन कमांड काम करता है, लेकिन आपको इसका उपयोग करने की थोड़ी पृष्ठभूमि की आवश्यकता है।

सबसे पहले, आपको इसे टाइप करने की आवश्यकता है, यह एक उपयोगिता नहीं है जो खिड़की में ग्राफिक रूप से संचालित होती है। जिस जगह आप इसे टाइप करते हैं, वह एक ऐप है, जिसका नाम है टर्मिनल । आप इसे अपने यूटिलिटीज फ़ोल्डर में पा सकते हैं, या इसे खोजने के लिए स्पॉटलाइट खोज का उपयोग कर सकते हैं।

एक बार जब आप इसे शुरू करते हैं, तो आपको एक कमांड लाइन विंडो मिलती है जहां आप कमांड में टाइप कर सकते हैं। सिर्फ इसलिए कि आप टाइप कर रहे हैं इसका मतलब यह नहीं है कि इसका कोडिंग से कोई लेना-देना है, लेकिन "पुराने जमाने" के ओएस पर नए लोगों के लिए यह थोड़ा डराने वाला है।

तो, कमांड को टच कहा जाता है , और कमांड के बाद आप विभिन्न मापदंडों को पारित कर सकते हैं, केवल एक ही फाइलनाम होना आवश्यक है। निम्नलिखित को टाइप करने से फ़ाइल की अंतिम संशोधित तिथि वर्तमान समय में सेट हो जाएगी:

touch filename

बेशक, आपको पहले फ़ाइल खोजने की आवश्यकता हो सकती है, जिससे इसे प्राप्त करने के लिए आगे आदेशों की आवश्यकता हो सकती है। सीडी या निर्देशिका बदलें आदेश यहाँ मदद करता है:

cd ~/Desktop/files/PDFs
touch filename

या, आप कमांड के भाग के रूप में फ़ाइल में पूर्ण पथ जोड़ सकते हैं:

touch ~/Desktop/files/PDFs/filename

स्पर्श कमांड का अधिक उन्नत उपयोग आपको उस समय को निर्दिष्ट करने की अनुमति देता है जिसे आप सेट करना चाहते हैं, निष्पादन के समय का उपयोग करने के बजाय, संशोधन समय के बजाय सेट का उपयोग करें आदि यह वही है जैसे -t और अन्य करते हैं। कुछ ने किसी अन्य फ़ाइल का समय निर्धारित किया, कुछ ने इसे वापस जाने के लिए सेट किया, या एक्स राशि से समय में आगे, ( अधिक विवरण के लिए यहां देखें), जैसे:

touch -d '1 May 2005 10:22' file8

निम्नलिखित इस पृष्ठ से है जो उपयोगी संदर्भ भी है, और उन लोगों के लिए कुछ युक्तियों के साथ एक महान उदाहरण है जो कमांड लाइन पर फ़ाइल स्थानों के साथ असहज हैं

ध्यान दें कि यह तिथि और संशोधित तिथि दोनों विशेषताओं को बदल देगा, यदि आपकी फ़ाइल आपके द्वारा दर्ज की गई तारीख के बाद बनाई गई थी। ऐसा इसलिए है क्योंकि किसी फ़ाइल को बनाने से पहले उसे संशोधित नहीं किया जा सकता है। यदि आपके द्वारा निर्धारित तिथि से पहले बनाया गया है, तो केवल संशोधित तिथि बदली जाएगी।

किसी फ़ाइल की दिनांक बनाई गई विशेषता को कैसे बदलें?

  1. टर्मिनल एप्लिकेशन खोलें ( /Applications/Utilities/Terminal.app) या यदि आप iTerm का उपयोग करना पसंद करते हैं।

  2. इसे टर्मिनल में टाइप करें (एंट्री / रिटर्न को टटोले बिना) फॉर्मेट में तारीख डालें YYYYMMDDhhmm:

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

    touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
    

    201212211111 उपरोक्त उदाहरण में दर्शाया गया है “21 दिसंबर 2012 11:11 पूर्वाह्न


2
लेकिन touchसंशोधित तिथि को संशोधित करता है, न कि फ़ाइल की निर्माण तिथि।
डैनियल

1
यह दोनों कर सकते हैं। मापदंडों पर निर्भर करता है।
स्टड

2
touchआपके द्वारा दिए गए मापदंडों का उपयोग करके संशोधन में बदलाव किया गया है लेकिन मेरी परीक्षण फ़ाइल के लिए निर्माण तिथियां नहीं।
डैनियल

2
@ डैनियल आपने संभावित रूप से अपना उत्तर दिया, लेकिन पूर्णता के लिए तर्क के आधार पर सृजन तिथि touch को संशोधित करता है। यदि आप एक संशोधन की तारीख की आपूर्ति करते हैं जो फ़ाइल के निर्माण की तारीख से पहले है, तो निर्माण तिथि नए संशोधन की तारीख के मूल्य में स्वचालित रूप से बदल जाएगी, क्योंकि फ़ाइल को बनाने से पहले इसे संशोधित नहीं किया जा सकता है।
गोविंद राय

2
मैंने सिर्फ सिएरा पर यह कोशिश की और निश्चित रूप से तारीख नहीं बदलती creation। मैं "पूर्व में दिनांक" को बदलने accessऔर modifiedतिथियों में सक्षम था , लेकिन इसने सृजन तिथि को संशोधित नहीं किया। स्पर्श के लिए मैन पेज की जांच करें, इसमें निर्माण तिथि का उल्लेख नहीं है। फ़ाइल सिस्टम: मैक ओएस एक्सटेंडेड (जर्नलेड, एनक्रिप्टेड)। का प्रयोग SetFile -d "$(GetFileInfo -m test.txt)" file.txtपूरी तरह से काम किया।
जोनाथन क्रॉस

7

ग्रेट्स यहां संकेत देते हैं, विशेष रूप से अंतिम एक (लॉरी रांता से, 15:21 पर 21 अगस्त को उत्तर दिया)। परफेक्ट!

अब मैं एक साधारण ऑटोमेकर वर्कफ़्लो का उपयोग कई फ़ाइलों को बदलने के लिए करता हूँ:

  1. चयनित खोजक आइटम प्राप्त करें
  2. शेल स्क्रिप्ट चलाएँ, "पास इनपुट: तर्क के रूप में"

शेल स्क्रिप्ट है:

for f in "$@"
do
    SetFile -d "$(GetFileInfo -m "$f")" "$f" 
done

यह एक आकर्षण की तरह काम करता है।


0

मैंने पाया कि नया फ़ोल्डर बनाने का सबसे आसान तरीका है, ग्रेफेड आउट फ़ोल्डर के सभी उप-फ़ोल्डरों को नए फ़ोल्डर में कॉपी करना, और वॉइला, नया फ़ोल्डर बाहर निकालना नहीं है। आप इसे खोजक में भी कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.