পসিক্স শেল দ্রবণ
টার্ডনের প্রথম সমাধানটি ব্রেস প্রসারণের উপর নির্ভর করে, যা একটি সম্পত্তি 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
(অব) অ্যাজক ব্যবহার করে
আউক একটি দুর্দান্ত সি-এর মতো ভাষা হওয়ায় আমাদের দুটি উপায়ে সহায়তা করতে পারে: (১) আমরা ফর্ম-লুপের সাথে ফাইলের নাম তৈরি করতে পারি এবং sprintf
ফাংশনের মাধ্যমে সেগুলি ফর্ম্যাট করতে পারি এবং (২) 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)}'