आप सही रास्ते पर हैं (एक सरल समाधान के लिए, केवल 2 या 3 कमांड चला रहे हैं, नीचे देखें)। आपको वर्तमान निर्देशिका से छुटकारा पाने के *
बजाय उपयोग करना चाहिए ./
और यह कुछ हद तक मिलीसेकंड के काटने को सरल करता है, फिर परिणाम को GNU parallel
या to में पाइप करें xargs
:
find * -type d | cut -c 1-10 | parallel date --date=@{} +%c
लेना
Sat 12 Sep 2015 08:35:11 CEST
Sun 13 Sep 2015 10:50:11 CEST
Mon 14 Sep 2015 08:35:21 CEST
और इससे पहले कि आपके उदाहरण इंगित करता है सेकंड ऑफसेट जोड़ने के लिए:
find * -type d | cut -c 1-10 | parallel 'echo "{} " $(date --date=@{} +%c)'
या:
find * -type d | cut -c 1-10 | xargs -I{} bash -c 'echo "{} " $(date --date=@{} +%c)'
लेना:
1442039711 Sat 12 Sep 2015 08:35:11 CEST
1442134211 Sun 13 Sep 2015 10:50:11 CEST
1442212521 Mon 14 Sep 2015 08:35:21 CEST
हालांकि यह आसान है:
find * -type d -printf "@%.10f\n" | date -f - +'%s %c'
जो आपको एक बार फिर से अनुरोधित आउटपुट देता है।
उपयोग करने *
का नुकसान यह है कि आप इसके विस्तार के लिए अपनी कमांडलाइन द्वारा सीमित हैं, हालांकि लाभ यह है कि आप अपनी निर्देशिकाओं को टाइमस्टैम्प मूल्य द्वारा क्रमबद्ध करते हैं। यदि निर्देशिकाओं की संख्या एक समस्या का उपयोग है -mindepth 1
, लेकिन आदेश खोना:
find ./ -mindepth 1 -type d -printf "@%.10f\n" | date -f - +'%s %c'
और sort
यदि आवश्यक हो तो डालें :
find ./ -mindepth 1 -type d -printf "@%.10f\n" | sort | date -f - +'%s %c'
¹ यह मानता है कि कोई नेस्टेड उपनिर्देशिका नहीं हैं, जैसा कि आपके उदाहरण से लगता है। तुम भी उपयोग कर सकते हैं ./ -mindepth 1
के बजाय*
² आप बदल सकते हैं parallel
के साथ xargs -I{}
यह सिर्फ अधिक वर्बोज़ @hobbs के रूप में यहाँ और @don_crissti का सुझाव दिया,।
³ गाइल्स के जवाब के आधार पर date
s फ़ाइल पढ़ने की क्षमताओं का उपयोग करें
Fri Oct 2 05:35:28 47592
)