আপনি যখন আদেশটি জারি করবেন:
mv *.txt *.tsv
শেলটি, বাশ ধরে নিতে দেয়, ওয়াইল্ডকার্ডগুলি প্রসারিত করে যদি কোনও মেলা ফাইল থাকে (ডিরেক্টরি সহ)। ফাইলগুলির তালিকা এখানে প্রোগ্রামটিতে প্রেরণ করা হবে mv
। কোনও মিল না পাওয়া গেলে অপ্রস্তুত সংস্করণটি পাস হয়ে যায়।
আবার: শেলটি প্যাটার্নগুলি প্রসারিত করে, প্রোগ্রামটি নয়।
উদাহরণস্বরূপ লোডগুলি সম্ভবত সেরা উপায়, সুতরাং আমরা এখানে যাচ্ছি:
উদাহরণ 1:
$ ls
file1.txt file2.txt
$ mv *.txt *.tsv
এখন mv
লাইনে যা ঘটে তা হ'ল শেলটি*.txt
মেলানো ফাইলগুলিতে প্রসারিত হয়। যেহেতু এমন কোনও *.tsv
ফাইল নেই যা পরিবর্তন হয় নি।
mv
কমান্ড বলা হয় দুটি বিশেষ আর্গুমেন্ট সহ :
argc
: প্রোগ্রাম সহ যুক্তি সংখ্যা।
argv
: প্রথম প্রবেশ হিসাবে প্রোগ্রাম সহ যুক্তিগুলির একটি অ্যারে।
উপরের উদাহরণে এটি হবে:
argc = 4
argv[0] = mv
argv[1] = file1.txt
argv[2] = file2.txt
argv[3] = *.tsv
mv
যদি শেষ যুক্তি, প্রোগ্রাম চেক দেখতে *.tsv
, একটি ডিরেক্টরি। এটি যেমন নেই তেমন প্রোগ্রামটি চালিয়ে যেতে পারে না কারণ এটি ফাইলগুলিকে একত্রিত করার জন্য ডিজাইন করা হয়নি। (সাধারণত সমস্ত ফাইলকে একটিতে সরান)) বা ঝাপটায় ডিরেক্টরি তৈরি করবেন না।
ফলস্বরূপ এটি ত্রুটিটি বাতিল করে এবং রিপোর্ট করে:
mv: target ‘*.tsv’ is not a directory
উদাহরণ 2:
এখন আপনি যদি এর পরিবর্তে বলেন:
$ mv *1.txt *.tsv
mv
আদেশের সঙ্গে মৃত্যুদন্ড কার্যকর করা হয়:
argc = 3
argv[0] = mv
argv[1] = file1.txt
argv[2] = *.tsv
এখন আবার উপস্থিত mv
আছে কিনা তা পরীক্ষা করে দেখুন *.tsv
। যেহেতু এটি ফাইলটি file1.txt
সরানো হয় না *.tsv
। তা হ'ল: ফাইলটির নাম পরিবর্তিত হয়েছে *.tsv
তারকাচিহ্ন এবং সমস্ত দিয়ে।
$ mv *1.txt *.tsv
‘file1.txt’ -> ‘*.tsv’
$ ls
file2.txt *.tsv
উদাহরণ 3:
আপনি যদি এর পরিবর্তে বলেছিলেন:
$ mkdir *.tsv
$ mv *.txt *.tsv
mv
আদেশের সঙ্গে মৃত্যুদন্ড কার্যকর করা হয়:
argc = 3
argv[0] = mv
argv[1] = file1.txt
argv[1] = file2.txt
argv[2] = *.tsv
হিসাবে *.tsv
এখন একটি ডিরেক্টরি হয়, ফাইল হচ্ছে প্রান্ত সেখানে চলে যান।
এখন: কমান্ড ব্যবহার করার মতো some_command *.tsv
অভিপ্রায়টি যখন আসলে ওয়াইল্ডকার্ডকে রাখে তখন সর্বদা তা উদ্ধৃত করা উচিত। উদ্ধৃতি দিয়ে আপনি যদি কোনও মিল থাকে তবে ওয়াইল্ডকার্ডগুলি প্রসারিত হতে বাধা দেন। যেমন mkdir "*.tsv"
।
উদাহরণ 4:
আপনি যদি উদাহরণস্বরূপ করেন তবে প্রসারণটি আরও দেখা যাবে:
$ ls
file1.txt file2.txt
$ mkdir *.txt
mkdir: cannot create directory ‘file1.txt’: File exists
mkdir: cannot create directory ‘file2.txt’: File exists
উদাহরণ 5:
এখন: mv
কমান্ডটি একাধিক ফাইলে কাজ করতে পারে এবং করতে পারে। তবে সেখানে যদি আরও দুটি থাকে তবে সর্বশেষে একটি টার্গেট ডিরেক্টরি হতে হবে। (Ptionচ্ছিকভাবে আপনি -t TARGET_DIR
বিকল্পটি ব্যবহার করতে পারেন , কমপক্ষে GNU mv এর জন্য))
সুতরাং এটি ঠিক আছে:
$ ls -F
b1.tsv b2.tsv f1.txt f2.txt f3.txt foo/
$ mv *.txt *.tsv foo
এখানে কল করা mv
হবে:
argc = 7
argv[0] = mv
argv[1] = b1.tsv
argv[2] = b2.tsv
argv[3] = f1.txt
argv[4] = f2.txt
argv[5] = f3.txt
argv[6] = foo
এবং সমস্ত ফাইল ডিরেক্টরিতে শেষ হয় foo
।
আপনার লিঙ্ক হিসাবে। আপনি একটি সরবরাহ করেছেন (একটি মন্তব্যে), যেখানে mv
মোটেও উল্লেখ করা হয়নি, তবে rename
। আপনার যদি আরও লিঙ্ক থাকে তবে আপনি ভাগ করতে পারেন। পাশাপাশি ম্যান পেজগুলির জন্য যেখানে আপনি দাবি করেন যে এটি প্রকাশ করা হয়েছে।