বাশ স্ক্রিপ্ট লুপে 1 এর পরিবর্তে 0001 নামের ডিরেক্টরি তৈরি করুন


10

নিম্নলিখিত বাশ স্ক্রিপ্টে যদি j = 0000 0001, 0002, নামযুক্ত ডায়ারগুলি তৈরি করতে আমি নীচের ব্যাশ স্ক্রিপ্টটি কীভাবে পরিবর্তন করব? ...? আসলে এটি 1, 2, 3 নামে ডায়ার তৈরি করে

for i in *.jpg; do let j+=1 ; mkdir $j ; done

ধন্যবাদ!

উত্তর:


13

আপনার বর্তমান স্ক্রিপ্টটি কেবলমাত্র দশমিক মান ব্যবহার করে - এটি স্পষ্টতই অগ্রণী শূন্য ছাড়াই মানটিতে অনুবাদ করে।

আপনাকে নেতৃস্থানীয় শূন্যগুলি সহ 4 টি অক্ষরের দৈর্ঘ্যে স্ট্রিং প্যাড করতে হবে। আপনি প্রিন্টফ ``কলটির ফলাফল পেতে ব্যাকটিক্স ব্যবহার করে এটি করেন printf %04d $j

ফলস্বরূপ, আপনার সম্পূর্ণ কমান্ড থাকা উচিত:

for i in *.jpg; do let j+=1; mkdir `printf %04d $j`; done

উত্স: স্ট্যাকওভারফ্লো: বাশ - একটি স্ট্রিংয়ের শূন্যে জিরো

(আপনি যদি আরও গভীরতর সমাধান চান তবে অবশ্যই এই প্রশ্নের আরও উত্তরগুলি দেখুন, তবে এটি অবশ্যই ব্যবহারের ক্ষেত্রে পুরোপুরি কার্যকর হয়))


5

ব্যাশ ব্যবহার করে, আপনার সেরা বিকল্পটি হ'ল:

mkdir {0001..0666}

নামের সাথে ডায়ার তৈরি 0001করতে 0666(শূন্য প্যাডিং সহ)।

আপনি ডিরেক্টরি চান নামে prefix0001suffix, prefix0002suffix... তারপর:

mkdir prefix{0001..0666}suffix

করব.

আপনি যদি শুধুমাত্র বিজোড় সংখ্যা ডিরেক্টরি নাম চান

mkdir {0001..0666..2}

এবং তাই ... দেখুন বন্ধনী সম্প্রসারণ মধ্যে bashসহায়িকা

ফেচিংগার যেমন উল্লেখ করেছেন, আপনাকে ডিরেক্টরিগুলির সংখ্যা আগে থেকেই জানতে হবে। আপনি যদি এমন একটি সমাধান চান যা আপনার নিকটতম, তবে সত্যই নিরাপদ এবং আরও আধুনিক বাশ আইডিয়াম ব্যবহার করে:

for i in *.jpg; do ((++j)); mkdir $(printf "%04d" $j) ; done

এটি শুধুমাত্র পূর্ববর্তী পরিমাণ পরিমাণ ডিরেক্টরি তৈরি করার জন্য দরকারী। সাধারণত, সংখ্যাযুক্ত ডিরেক্টরি ব্যবহার করার সময়, আপনি একটি গতিশীল প্রসঙ্গে থাকেন - যার অর্থ এটি রানটাইমের সময় পরিমাণ নির্ধারণ করা উচিত এবং সুতরাং এখনও স্ট্রিং প্যাডিং প্রয়োজন। যদিও নির্দিষ্ট ব্যবহারের ক্ষেত্রে নির্ভর করে।
ব্যবহারকারী 98085

পছন্দ করুন পোস্ট অনুসারে সম্পাদিত।
gniourf_gniourf
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.