कट

2015-02-03 11 views
13

साथ फ़ाइल नाम का गुच्छा से पहले n चरित्र निकालें मैं उपयोग कर रहा हूँकट

ls | cut -c 5-

यह स्वरूप मैं उन्हें चाहते हैं में फ़ाइल नाम की एक सूची प्रदान करता है, लेकिन वास्तव में कार्रवाई प्रदर्शन नहीं करता । कृपया सलाह दें।

+0

क्या कार्य करें? फ़ाइलों का नाम बदलें? –

+0

@EtanReisner फ़ाइल नामों से पहले 5 वर्णों को हटा रहा है। –

+0

यह उन्हें आउटपुट से हटा देता है। मुझे लगता है कि आप उन्हें फ़ाइलों के लिए फ़ाइल नाम से हटा दें ... तो निर्देशिका में सभी फाइलों का नाम बदल रहे हैं? –

उत्तर

2

कुछ इस तरह काम करना चाहिए:

for x in *; do 
    echo mv $x `echo $x | cut -c 5-` 
done 

ध्यान दें कि यह विनाशकारी हो सकता है, तो यह इस तरह से पहले चलाने के लिए, और उसके बाद प्रमुख echo को दूर एक बार यदि आपको विश्वास है कि यह तुम क्या चाहते है कि कर रहे हैं।

+1

पहले 'echo' को हटाकर और लिखित के रूप में, क्या यह केवल त्रुटियों के बिना काम नहीं करेगा यदि निर्देशिका में केवल नाम के बिना फ़ाइलों को शामिल किया गया है और कम से कम 6 वर्ण लंबा हैं? बैक-टिक्स के विरासत उपयोग के बजाय '$ x' को डबल-उद्धृत करने और '$ (..)' का उपयोग करते समय रिक्त स्थान त्रुटियों के साथ फ़ाइल नाम लेना होगा, हालांकि अकेले ही उन सभी त्रुटियों का ख्याल नहीं रखेगा जिन्हें फेंक दिया जा सकता है, उदा। यदि कोई फ़ाइल नाम केवल 5 वर्ण लंबा है या निर्देशिकाएं हैं। – user3439894

20
rename -n 's/(.{5})(.*)$/$2/' *.* 

-n अनुकरण के लिए है; वास्तविक परिणाम प्राप्त करने के लिए इसे हटा दें।

13

जब आप फ़ोल्डर में हैं निम्न आदेश का उपयोग जहां नाम बनाना चाहते कर सकते हैं:

rename -n -v 's/^(.{5})//' * 

-n कोई कार्रवाई नहीं की है और -v दिखाने के लिए क्या परिवर्तन हो जाएगा। यदि आप परिणामों से संतुष्ट हैं तो आप दोनों को हटा सकते हैं

rename 's/^(.{5})//' * 
संबंधित मुद्दे