POSIX खोल समाधान
टेरडॉन का पहला समाधान ब्रेस विस्तार पर निर्भर करता है, जो की एक संपत्ति है bash
और ksh
, हालांकि इसका उपयोग मानक /bin/sh
शेल में नहीं किया जा सकता है , जो उबंटू पर सिम्प्लाइड है /bin/dash
।
ऐसे मामलों में जहाँ आपको /bin/sh
अपनी स्क्रिप्ट की पोर्टेबिलिटी के लिए निर्भर होना पड़ता है , वहाँ आम तौर पर इस दृष्टिकोण के लिए दो तरीके हैं। एक ग्लोबिंग के माध्यम से होगा। बस cd folderA
और वहाँ से चला rm a_*
। दूसरा तरीका, while <CONDITION>;do ...done
शेल भाषा में लूप के विकल्प के लिए सी-स्टाइल लागू करना और इसके साथ संख्याओं को प्रारूपित करना होगा printf
:
$ sh -c 'i=0;while [ $i -le 750 ]; do filename=$(printf "a_%06d" $i);echo "$filename";i=$((i+1)) ;done'
ध्यान दें कि यहां मैं उपयोग करता हूं echo
। फ़ाइलों को हटाने के लिए तैयार होने पर या उसके echo "$filename"
साथ बदलें । यह भी ध्यान दें, यह तब किया जाना चाहिए जब आप पहले से ही वांछित निर्देशिका में एड करते हैं।rm ./"$filename"
rm -- "$filename"
cd
(ab) awk का उपयोग करना
Awk एक अच्छी सी-लाइक भाषा होने से हमें दो तरह से मदद मिल सकती है: (1) हम फाइल को लूप के साथ उत्पन्न कर सकते हैं और उन्हें sprintf
फंक्शन के माध्यम से फॉर्मेट कर सकते हैं, और (2) system()
कमांड के माध्यम से उक्त फाइलों को हटा सकते हैं , जो हमारे उत्पन्न फाइलनाम और rm
कमांड को पास करेंगे। को /bin/sh
:
awk 'BEGIN{for(i=0;i<=750;i++){filename=sprintf("a_%06d",i);system("rm "filename);} }'
पर्ल
पोर्टेबल दृष्टिकोण के विचार के साथ आगे बढ़ते हुए, जहाँ हम "फ़ाइलनाम" उत्पन्न करते हैं, हम पर्ल में भी ऐसा कर सकते हैं:
perl -le 'for(0..750){$fd=sprintf("a_%06d",$_);unlink($fd)}'