ডিরেক্টরিতে একবারে আমি একাধিক ডিরেক্টরি কীভাবে করব?


25

আমি mkdir দিয়ে জানি আমি mkdir A B C D E Fপ্রতিটি ডিরেক্টরি তৈরি করতে পারি । প্রতিটি অক্ষর বা সংখ্যা টাইপ করে আমি কীভাবে ডিরেক্টরি এজেড বা 1-100 তৈরি করতে পারি?

উত্তর:


18

কেবলমাত্র একটি forলুপ ব্যবহার করা এটি সবচেয়ে সহজ :

for char in {A..Z}; do
    mkdir $char
done

for num in {1..100}; do
    mkdir $num
done

আপনার যদিও কমপক্ষে নূন্যতম বাশ দরকার 3.0; অন্যথায় আপনার মতো কিছু ব্যবহার করতে হবেseq


1
মাইকেল ধন্যবাদ! কৌতূহলী হওয়ার সাথে সাথে আমি {এ..জেড in তে চরের জন্য চরের সামনে পরীক্ষা যোগ করার চেষ্টাও করেছি; এমকিডির টেস্ট করুন $ চর যা আমাকে ডিরেক্টরি পরীক্ষা দিয়েছে [এজেড], শিখতে সবসময় ভাল
স্টিভ বার্ডাইন

একটি বিষয় মনে রাখবেন যে আপনি যখন আপনার ফাইলের নাম তালিকাভুক্ত করেন বা * এর মতো ওয়াইল্ডকার্ড ব্যবহার করেন তখন আপনার ফাইলের নামগুলি কীভাবে সাজানো হবে। '11' '2' এর আগে বাছাই করবে। আপনি যদি নেতৃস্থানীয় শূন্যগুলির সাথে সমস্ত সংখ্যা একই দৈর্ঘ্যের জন্য ব্যবস্থা করেন তবে এড়ানো যায়। ডেনিস উইলিয়ামস ব্যাশ 4 এ কীভাবে করবেন তা দেখায়, তবে আপনার কাছে স্ক্রিপ্টটি কোড করতে পারেন যদি আপনার কাছে বাশ 4 না থাকে
জে

71

{}সিনট্যাক্স বাঁধা না ব্যাশ সিনট্যাক্স হল forকনস্ট্রাক্ট।

mkdir {A..Z}

নিজেই যথেষ্ট।

http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion


5
ওহ, এটি দর্শনীয়। এটি আরও উত্তম উত্তর
মাইকেল মরোজেক

1
আমি এটি জানতাম না, দুর্দান্ত টিপ!
বিপরীতমুখী

5
সৌন্দর্যের জন্য +1, স্টাইলের জন্য +1, আরক্রোলির
স্টিফান

আমার কাছ থেকে +500 অনুগ্রহ।
জর্জ চালাহাব

এটা সত্যিই দারুন! সবেমাত্র এটি ব্যবহার করেছেন:mkdir -p ./logs-{1..5}
প্রণব 웃

8

আপনি আরও জটিল সংমিশ্রণগুলিও করতে পারেন (এর echoপরিবর্তে এগুলির সাথে চেষ্টা করুন mkdirযাতে পরে কোনও পরিষ্কার ব্যবস্থা নেই):

তুলনা করা

$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post

থেকে

$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post

আপনার যদি বাশ 4 থাকে তবে চেষ্টা করুন

$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010

এবং

$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009

7

লিনাক্সে আপনি "seq" কমান্ড দিয়ে অঙ্কের ক্রম তৈরি করতে পারেন, তবে এটি সমস্ত ইউনিক্স সিস্টেমে বিদ্যমান নেই। উদাহরণস্বরূপ 1 থেকে 100 পর্যন্ত ডিরেক্টরি উত্পন্ন করার জন্য:

mkdir `seq 1 100`

আপনি অবশ্যই শেল ব্যবহারের সাহায্যে A to Z ডিরেক্টরি তৈরি করতে পারেন:

seq 65 90 \
    | while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
    | xargs mkdir

কেবল পার্ল ব্যবহার করা সম্ভবত এটি অনেক কম কুশ্রী:

perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'


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