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)}'