यह विभिन्न प्लेटफ़ॉर्म पर गैर-मानक सुविधाओं का क्लासिक केस प्रतीत होता है।सेकेंड में फ़ाइल संशोधित समय प्राप्त करने का सर्वोत्तम तरीका
काफी सरलता से, मैं सेकंड में यूनिक्स टाइमस्टैम्प के रूप में फ़ाइल के संशोधित समय को प्राप्त करने के लिए सार्वभौमिक (या कम से कम व्यापक रूप से समर्थित) विधि चाहता हूं।
अब मुझे stat
के साथ ऐसा करने के विभिन्न तरीकों के बारे में पता है लेकिन अधिकांश प्लेटफार्म विशिष्ट हैं; उदाहरण के लिए stat -c %Y $file
कुछ के लिए काम करता है, लेकिन ओएस एक्स (और संभवतः अन्य फ्रीबीएसडी सिस्टम) पर काम नहीं करेगा जो इसके बजाय stat -f %m $file
का उपयोग करता है।
इसी तरह, कुछ प्लेटफॉर्म का समर्थन date -r $file +%s
, हालांकि ओएस एक्स/FreeBSD फिर से नहीं करता है के रूप में -r
विकल्प सिर्फ एक यूनिक्स टाइमस्टैम्प के बजाय अन्य प्लेटफार्मों पर के रूप में संदर्भ फ़ाइल विकल्प प्राप्त करने के लिए +%s
का उपयोग कर के लिए एक वैकल्पिक हो रहा है।
अन्य विकल्प जो मैं परिचित हूं -printf
विकल्प के साथ उपयोग करना है, लेकिन फिर यह व्यापक रूप से समर्थित नहीं है। आखिरी विधि जो मुझे पता है वह ls
पार्सिंग है, जो एक अप्रिय चीज करने के अलावा, ऐसा कुछ नहीं है जो मुझे विश्वास है (या कम से कम चाहिए) पर भरोसा किया जा सकता है।
तो, क्या फ़ाइल का संशोधित समय प्राप्त करने के लिए एक और अधिक संगत विधि है? वर्तमान में मैं सिर्फ stat
की एक स्क्रिप्ट में अलग-अलग बदलावों को फेंक रहा हूं और शून्य तक की स्थिति से बाहर निकलने तक उन्हें चला रहा हूं, लेकिन यह आदर्श से बहुत दूर है, भले ही मैं भविष्य में पहले चलाने के लिए सफल कमांड को कैश करता हूं।
मैं वास्तव में कुछ भी बंडल नहीं कर सकते; इसका लक्ष्य सिर्फ एक साधारण शेल स्क्रिप्ट होना है जो लगभग किसी भी यूनिक्स-वाई ओएस पर चलाना चाहिए। समस्या यह है कि मुझे NAS बॉक्स जैसे वातावरण शामिल करने की आवश्यकता है, जिसमें पाइथन या पर्ल शामिल नहीं हो सकते हैं। क्या खोल में ऐसा करने का कोई बेहतर तरीका नहीं है? – Haravikk