मैं ओएसएक्स पर एलएस कमांड लाइन द्वारा उपयोग किए जाने वाले समय प्रारूप को कैसे बदलूं?


27

मैं प्रारूप (सैन्य प्रारूप) lsमें प्रदर्शन का समय बनाना चाहता हूं ISO। मैं इस व्यवहार को कैसे बदल सकता हूं?

लिनक्स पर मुझे पता था कि मैं us द्वारा लंबे प्रारूप में समय प्रदर्शित करने के लिए ls को बाध्य कर सकता हूं --full-timeलेकिन यह OS X पर काम नहीं करता है।

अद्यतन: मुझे पता है कि कमांड द्वारा उपयोग किया जाने वाला प्रारूप localeसेटिंग्स पर आधारित है । समस्या यह है कि ओएस पर XI सेटिंग की चाल का उपयोग करने में सक्षम नहीं था LC_TIME=en_DK


1
एक गैर-उत्तर, लेकिन फिर भी संभवतः उपयोगी: स्टेट (1) कमांड काफी लचीला है और किसी भी वांछित प्रारूप में समय टिकटों को प्रदर्शित करने के लिए बनाया जा सकता है।
हेराल्ड हैन्च-ऑलसेन

gls (gnu ls) जिसका मैंने अपने उत्तर में उल्लेख किया है - आप एक शैली = ध्वज ले सकते हैं जहाँ आप एक + प्रारूप स्ट्रिंग निर्दिष्ट कर सकते हैं, जिससे आप अपनी इच्छानुसार तिथि को प्रकट कर सकते हैं।
बैरीज

काश मैं एक रास्ता जानता था। lsलगता है कि Apple का BSD मैनुअल डेटाइम को प्रारूपित करने के लिए कुछ नहीं दे रहा है, समय के साथ बदलने के अलावा और अल्फा के बजाय डेटाइम द्वारा सॉर्ट करना है। डेवलपर
.apple.com

जवाबों:


16

यदि आप ग्नू कोरटिल्स स्थापित करते हैं तो ग्नू ls उपलब्ध है, जो आवश्यकतानुसार करेगा। यदि आप पैकेज प्रबंधक के रूप में काढ़ा का उपयोग करते हैं, तो यह उतना ही सरल है:

brew install coreutils
gls -l --time-style=full-iso

धन्यवाद, यह उपयोगी है लेकिन समस्या को हल नहीं करता है। उपयोग किया गया पूर्ण प्रारूप अभी भी ISO-8601 नहीं है।
सोरिन

ठीक है - आप ग्नू कोरूटिल्स को स्थापित कर सकते हैं जिसमें ग्नू एलएस शामिल है, जो वह करेगा जो आप चाहते हैं। सबसे आसान तरीका काढ़ा, मैकपोर्ट्स या फिंक में से एक है। मैं काढ़ा का उपयोग करता हूं - तो बस 'काढ़ा स्थापित कोरुटिल्स' काम करता है। तब आपके पास gls उपलब्ध होंगे।
बैरीज

1
विशेष रूप से, स्थापित होने के brew install coreutilsपरिणामस्वरूप /usr/local/bin/gls, इसलिए आपको glsइसके बजाय चलाने की आवश्यकता है ls
erik.weathers

आपको gls -l --time-syle="+%I"(या जो भी सही gdate-स्टाइल प्रारूप ISO-8601 के लिए है) समय प्रारूप निर्दिष्ट करने की आवश्यकता है ।
रुबिनोरेल्स

इस प्रकार सही कॉल है; gls -l - समय-शैली = full-iso
AnneTheAgile

13

OS X की अंतर्निहित lsकमांड समय-समय पर तर्क-वितर्क नहीं करती है, लेकिन statकमांड स्ट्रैटिफ़ स्वरूप का तार लेती है , ताकि आप जो करना चाहते हैं उसका एक अनुमान प्राप्त कर सकें:

stat -l -t '%FT%T' *

%FT%Tएक ISO8601 स्थानीय टाइमस्टैम्प का उत्पादन करता है। %zयदि आप एक यूटीसी ऑफसेट चाहते हैं तो जोड़ें ।

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

stat -l -t '%F%T' * | tr ' ' \\t

वैकल्पिक रूप से, मुझे लगता है कि ls -lएक कस्टम लोकेल को परिभाषित करके ISO8601 टाइमस्टैम्प का उत्पादन करना संभव होना चाहिए , लेकिन मैंने इसे देखा नहीं है।


-1

ls -l --time-style=iso मेरे लिए ठीक काम करता है।


1
ऐसा नहीं करता। पहाड़ी शेर।
नकिलोन १on

2
मावेरिक्स पर भी नहीं।
क्ले ब्रिजेज़

4
यह शायद ओपी के लिए ठीक काम करता है, क्योंकि उसने lsपैकेज की तरह एक प्रबंधक के माध्यम से इसे साकार करने के बिना एक गैर-प्रणाली स्थापित की है ।
अलिग

1
@Algal से सहमत हैं। मैंने के /usr/local/bin/glsमाध्यम से स्थापित किया है brew install coreutils, और वह --time-styleविकल्प का समर्थन करता है। ओपी चला सकता है brew install coreutils --with-default-namesजिसके परिणामस्वरूप /usr/local/bin/lsस्थापित किया जाएगा (अन्य उपयोगिताओं के बीच), या हो सकता है कि ओपी ने एक मैनुअल सीलिंक स्थापित किया हो gls
erik.weathers

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