ইউনিক্স: ফাইলগুলি একটি ড্যাশ দিয়ে শুরু, -


19

ঠিক আছে, আমার কাছে ড্যাশ দিয়ে শুরু হওয়া অনেকগুলি ফাইল রয়েছে -। যা এতটা ভাল নয় ... এবং আমি তাদের নাম পরিবর্তন করতে চাই। আমার বিশেষ ক্ষেত্রে আমি কেবল তাদের সামনে একটি চরিত্র রাখতে চাই।

আমি নিম্নলিখিত লাইনটি খুঁজে পেয়েছি যা কাজ করা উচিত, তবে এটি ড্যাশ হওয়ার কারণে এটি কার্যকর হয় না:

for file in -N*.ext; do mv $file x$file; done

আমি echoযদি সামনে mvরাখি তবে আমি একটি গুচ্ছ পাব

mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext

কোনটি সঠিক, অবশ্যই এটি প্রথম ফাইলের নাম বিকল্প হিসাবে মনে করবে। সুতরাং আমি যখন সরান echoএবং এটি চালান আমি ঠিক একটি গুচ্ছ পেতে

mv: illegal option -- N

আমি এটিকে পরিবর্তন করার চেষ্টা করেছি

for file in -N*.ext; do mv "$file" "x$file"; done

তবে উদ্ধৃতিগুলি কেবল এড়ানো হবে বলে মনে হচ্ছে। একক উদ্ধৃতি ব্যবহারের চেষ্টা করা হয়েছিল, কিন্তু তারপরে ভেরিয়েবলটি প্রসারিত হয়নি ... আমি এখানে কী করব?

আপডেট: আমি এখন উদ্ধৃতি উদ্ধৃত করার চেষ্টা করেছি। এটার মত:

for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done

এবং আমি যখন এটি প্রতিধ্বনিত করি তখন এটি সঠিক দেখা যায় তবে আমি যখন এটি চালাই আমি তখনই পেতাম

mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory

এখন কীভাবে এটি করবেন তা সম্পর্কে আমার কোনও ক্লু নেই s


উত্তর:


28

এমভি কমান্ডটি --বলতে আপনার কীওয়ার্ডটি ব্যবহার করতে হবে যে আর্গুমেন্টগুলি বিকল্প হিসাবে ব্যাখ্যা করা উচিত নয়। ঘড়ি:

$ mv -N1.ext x-f1.ext
mv: invalid option -- N
Try `mv --help' for more information.

$ mv -- -N1.ext x-f1.ext
$ ls
x-f1.ext

কমান্ডলাইনে সমস্ত অপশনের -- পরে ব্যবহার করুন। উদাহরণস্বরূপ, আপনি যদি এমভি-i বিকল্পটি ব্যবহার করার চেষ্টা করছেন তবে এটি আগে চলে যাবে : --

mv -i -- -filename-begins-with-dash newfilename

6
Aaah। সে সম্পর্কে মোটেই ভাবেননি। মাঝামাঝি সময়ে আমি জানতে পারলাম আমি ./ফাইলের সামনেও আটকে থাকতে পারি , যা কাজ করবে which কিন্তু এই কোর্সের একটি এমনকি neater বিকল্পের :) হল
Svish

@ সুইভস: এটি ন্যায্য, আমি কোনওর সাথে ফাইলের নাম প্রিন্ট করার বিষয়ে ভাবি ./নি। তবে আপনি সঠিক, এই পরিস্থিতিটির জন্য এটি খুব কার্যকর।
কোয়াকোট কোয়েসোট

7
নোট করুন যে --বিকল্পগুলি একটি কনভেনশন হিসাবে অর্থটি আরও যুক্তি প্রক্রিয়াকরণ করবেন না এবং সমস্ত প্রোগ্রামের দ্বারা সম্মানিত নয়। কেউ কেউ এর জন্য একাকী -ব্যবহার করেন এবং কেউ কেউ সে উদ্দেশ্যে কিছু গ্রহণ করেন না । তাই প্রিপেন্ডিং মাথায় ./রেখে মূল্যবান।
ডিএমকেেকে

@ ডিএমকেকে ঠিক বলেছেন; --একটি বিশেষ যুক্তি হিসাবে একটি জিএনইউ এক্সটেনশন, তবে এটি পসিএক্স নির্দেশিকায় উল্লেখ করা হয়েছে। বিভাগ 12.2, গাইডলাইন 10: opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html দেখুন ... এর অর্থ আপনি অধিবেশনকে সম্মান করার জন্য বেশিরভাগ পসিক্স এবং জিএনইউ উপযোগিতা আশা করতে পারেন, তবে অন্যরা তা নাও করতে পারে।
কোয়াকোট কোয়েসোট

6

আর একটি কৌশল হ'ল ফাইলের নাম সহ পিতামাতাকে অন্তর্ভুক্ত করা ...

ফাইলের নাম 'ফাইল-টু-রি-নেম' 'ফাইল-টু-রি-নেম' করতে ...

mv  ../parent-dir/-file-to-rename  file-to-rename

আপনাকে ধন্যবাদ @ স্কিপি লে গ্র্যান্ড গৌরূ। নিশ্চিত করা হয়েছে যে ./- ফাইল-টু-নামকরণটি এর সাথে mvএবং rmযেমন ...

mv  ./-file-to-rename  ./--file-to-rename

rm  ./-file-to-rename

1
বা আরও ভাল, কুইক্সোটের উত্তরটি ব্যবহার করার জন্য মন্তব্যগুলিতে ইতিমধ্যে উল্লিখিত হয়েছে ./
স্কিপি লে গ্র্যান্ড গৌরূ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.