বাশ স্ক্রিপ্ট লুপে 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.