যার নামটি “-” (হাইফেন ওরফে ড্যাশ বা বিয়োগ) দিয়ে শুরু হয় সেই ফাইলটি আমি কীভাবে মুছব?


348

যার ফাইল নাম ড্যাশ (হাইফেন বা বিয়োগ) দিয়ে শুরু হয় আপনি কীভাবে তাকে সরিয়ে ফেলবেন -? আমি একটি দূরবর্তী ওএসএক্স সার্ভারে প্রবেশ করব এবং আমার এই ডিরেক্টরিটি আমার ডিরেক্টরিতে আছে:

tohru:~ $ ls -l
total 8
-rw-r--r--    1 me  staff  1352 Aug 18 14:33 --help
...

কীভাবে আমি --helpএকটি সি এল এল থেকে মুছে ফেলতে পারি ? এই সমস্যাটি এমন একটি বিষয় যা আমি উপলক্ষে বিভিন্ন রূপে আসি, এই ফাইলগুলি তৈরি করা সহজ, তবে এ থেকে মুক্তি পাওয়া শক্ত।

আমি ব্যাকস্ল্যাশ ব্যবহার করার চেষ্টা করেছি

rm \-\-help

আমি উদ্ধৃতি চেষ্টা করেছি

rm "--help"

আমি কীভাবে বিয়োগ (ড্যাশ বা হাইফেন) চরিত্রটিকে বিকল্প হিসাবে ব্যাখ্যা করতে বাধা দেব?


1
এই প্রশ্নের নাম পরিবর্তন করে "যার নাম দিয়ে শুরু হয় এমন কোনও ফাইল মুছবেন কীভাবে" - এ নামকরণ করা হলে দুর্দান্ত হবে।
স্যান্ডি

@ স্যান্ডি সম্মত; আমি সাধারণত কোনও প্রশ্নের অর্থ পরিবর্তন করা অপছন্দ করি তবে এই ক্ষেত্রে গ্রহণযোগ্য উত্তরটি এই সমস্যার জন্য নির্দিষ্ট
মাইকেল মরোজেক

33
আমি এটিকে কিছুটা বিদ্রূপযুক্ত মনে করি যা rm --helpআসলে কী দিয়ে শুরু করে ফাইলের নামগুলি মুছতে হয় তা ব্যাখ্যা করে -। তবুও ভাল প্রশ্ন।
লেসমানা

1
@ jw013 কখনও কখনও অভিজ্ঞ ব্যবহারকারীদের বুঝতে সহায়তা সহজ, তবে নতুনদের কাছে অপ্রতিরোধ্য এবং বিভ্রান্তিকর।
আইকনোক্লাস্ট

1
আমি ব্যাসিবক্স থেকে আরএম ব্যবহার করে একটি সিস্টেমে ছুটে এসেছি। সহায়তা সহ সবকিছুই সর্বনিম্ন, সুতরাং আরএম - সহায়তা কোনও ক্লু সরবরাহ করে নি।
dslake

উত্তর:


497

কম্যান্ড লাইন বিকল্পগুলি পার্সিং বন্ধ করার জন্য "-" ব্যবহার করুন:

rm -- --help

1
আমি জানতাম এটি খুব সাধারণ কিছু ছিল ...
ব্রায়ান রেহবেন

2
rmকমান্ডের সমস্ত সংস্করণ --যুক্তি সমর্থন করে ?
কিথ থমসন

3
@ কিথথম্পসন - বেশিরভাগ জিএনইউ সরঞ্জামগুলির বৈশিষ্ট্য, সুতরাং এটি বেশিরভাগ নন-জিএনইউ ("নন-লিনাক্স") ইউনিক্সস (উদাহরণস্বরূপ বিএসডি ভেরিয়েন্ট বা কিছু এমবেডেড সিস্টেম)
dtech

1
ধন্যবাদ! এটা আমার দিন বাঁচিয়েছে। এবং অবশ্যই এটি BSD (OSX) এবং অন্যান্য কমান্ডের সাথে কাজ করে!
রাশখাদফি

8
@dtech, getopt () এবং --GNU (SysIII, 1980) প্রেরেট করুন এবং মান / POSIX। কয়েকটি ব্যতিক্রম (যেমন echo) বুঝতে ব্যতীত স্ট্যান্ডার্ড ইউটিলিটিস --। অন্যান্য কমান্ডের জন্য ওয়াইএমএমভি, যদি তারা বিকল্পগুলি পার্স করতে getopt () API ব্যবহার না করে।
স্টাফেন চেজেলাস

213

অথবা আপনি করতে পারেন

rm ./--help

7
এটি গুরুত্বপূর্ণ নয় তবে এটি সবচেয়ে "যথাযথ" বলে মনে হয়।
জেমস এম

2
এটিই আমার মনে আছে। "আরএম - - হেল্প" ব্যবহার করা এমন জিনিস যা আমাকে সর্বদা সন্ধান করতে হবে।
ব্যবহারকারী 60

25
এই পদ্ধতিটি সর্বদা এমন কমান্ডগুলির জন্যও কাজ করে যা --বিশেষত আচরণ করে না ।
jw013

এবং এটি মত বিশেষভাবে নামে আর্গুমেন্ট অন্যান্য ধরনের জন্য কিছু কমান্ড দ্বারা বিশেষ চিকিত্সা (অপশন পাশে) এড়াতে কাজ করে -টেক্সট ইউটিলিটি বা cd, foo=barএর awk...
Stéphane Chazelas

1
এটি কাজ করে যখন কোনও ফাইল কোনও একক ড্যাশ দিয়ে শুরু হয়, যেখানে rm -- <filename>হয়নি।
স্টকবি

37

findএটি করতে ব্যবহার করুন :

find . -name '--help' -delete

এবং এটি একটি ভাল পদ্ধতি কারণ আপনার যদি আরও কিছু থাকে তবে আপনি মুছে ফেলতে পারেন এমন কয়েকটি ফাইল আপনি -deleteপ্রথমে বিকল্পটি ছাড়াই সন্ধান করে ফাইলগুলির একটি পূর্বরূপের তালিকা পেতে পারেন , এবং তারপরে যদি ফাইলগুলির তালিকা ভাল দেখায় তবে কেবল রান করুন এটি আবার সঙ্গে -delete

আসলে, আপনি rmপক্ষে পক্ষে এড়ানো find(বিশেষত পূর্বরূপ সঙ্গে প্রথমে) একটি ভাল অভ্যাস যা আপনাকে ভুলগুলি এড়াতে সহায়তা rm *করবে যা আপনাকে অবশ্যই কোনও দিন কাটাবে।

নোট, যদিও, এটি আপনার সমস্ত উপ-ডিরেক্টরিতে পুনরাবৃত্তি হবে, সুতরাং আপনি এটির মতো একটি উপ-ডিরেক্টরি গভীরতার সীমাবদ্ধতা দিয়ে এটি চালাতে চাইতে পারেন:

find . -maxdepth 1 -name '--help' -delete

যা বর্তমান ডিরেক্টরিতে সীমাবদ্ধ করে।


বহনযোগ্যভাবে, আপনাকে findফাইল / ডায়ারগুলির একটি তালিকা দিতে হবে give তাই find . -name...-deleteএবং -maxdepthমানক বিকল্প হয় না।
স্টাফেন চেজেলাস

21

ভেগার নীলসেন এবং এডফুহের উত্তরগুলি খুব ভাল এবং এর মতো সমস্যার যথাযথ সমাধান।

আমি এই প্রশ্নের একটি সাধারণ প্রতিক্রিয়া যোগ করতে চাই যা আপনাকে কোনও জটিল ফাইল নামের সাথে কোনও ফাইল মুছতে দেয় । প্রথমে এর ইনোড নম্বরটি ব্যবহার করে ls -iবা কিছু ফর্ম ব্যবহার করা হয় statএবং তারপরে ইনড নম্বর দ্বারা বর্তমান ডিরেক্টরিতে ফাইল অনুসন্ধান rmকরে এবং ফাইলের সাথে একটি মেলে থাকা ইনোড নম্বর দিয়ে কমান্ড প্রয়োগ করে ফাইলটি সরিয়ে ফেলা হয়

find . -inode <inode> -exec rm {}\;

যেহেতু প্রতিটি ফাইল সিস্টেমে ইনোড নম্বরগুলি অনন্য, আপনি এটি ব্যবহার করে যে কোনও ফাইল সরিয়ে ফেলতে পারেন; ইউনিকোড বা পালানোর অক্ষর ব্যবহার করে। এটি টাইপ করা কত বিরক্তিকর তাই আমি লাইনটি যুক্ত করার পরামর্শ দেব

TAB: menu-complete             # Tab: Cycles through the command
"\e[Z": menu-complete-backward # Shift-Tab: Cycles backwards

.inputrcআপনি যদি ব্যাশ ব্যবহার করছেন তবে আপনার ফাইলে। এটি আপনাকে সম্ভাব্য পরিপূরকগুলির তালিকা ( আরও তথ্যের জন্য ) মাধ্যমে চক্র করতে দেয় ।


5
এই পদ্ধতিতে দুটি সমস্যা রয়েছে: 1) আপনি যখন -ডিলিট ব্যবহার করতে পারেন তখন -exec আরএম ব্যবহার করবেন না; 2) find -name '--help' -delete
ইনোডটি পাওয়া এবং

আমি মনে করি না যে এটি কাজ করবে। এটা বর্তমান ডিরেক্টরির মধ্যে সমস্ত ফাইল এবং এর সমস্ত সাবডিরেক্টরি ঘোরে, এবং সমস্ত এটি পরে এখনো ডাকে rm --help, এখনও ফাইল মুছবে না পারে। সবেমাত্র rm ./--help(বা rm -i *
কিথ থম্পসন

1
@ কিথথম্পসন findসমস্ত ফাইলের কমান্ড লাইন আর্গুমেন্টের পথটিকে উপস্থাপন করে, তাই এটি চালিত হবে rm ./--helpএবং rm ./sub/dirs/--help। দ্বিতীয়টি ঠিক করার জন্য, একটি যুক্ত করতে হবে -maxdepth 1, তবে এগুলি সবগুলিই মূলত @ এডফুহ এর সমাধানটিকে আরও চক্কর, বিভ্রান্তিকর উপায়ে প্রয়োগ করা -deleteহচ্ছে এবং -exec rmযাইহোক এটির চেয়ে নিরাপদ ।
jw013

1
এই কমান্ডটির সাথে আরও একটি সমস্যা হ'ল এটির মধ্যে অবশ্যই একটি স্থান থাকতে হবে {}এবং \;অন্যথায় এটি কাজ করবে না।
ইউজিন এস

আইওনডগুলি অনন্য হতে পারে তবে একই ইনোড সহ বেশ কয়েকটি ডিরেক্টরি এন্ট্রি থাকতে পারে। এগুলিকে হার্ডলিঙ্ক বলা হয়। এবং সেগুলি প্রতি ফাইল সিস্টেমে কেবল অনন্য, তাই আপনার ব্যবহার করা দরকার -xdev। এটি আপনাকে চালাতে সহায়তা করবে না ls -i --help
স্টাফেন চেজেলাস


8

লিনাক্স ওয়াকথ্রুটি ড্যাশ এবং স্পেস দিয়ে কোনও ফাইল তৈরি করার পরে তা মুছে ফেলবে।

সাবধান হও! দুর্ঘটনাক্রমে কোনও rm -rf /বা অনুরূপ ক্যাসকেড মুছুন কমান্ডটি চালাবেন না ।

আপনার ফাইল আপনি সরানোর চেষ্টা করছেন আস্টেরিক্স বা স্ল্যাশ অন্তর্ভুক্ত থাকে, ঘটনাক্রমে একটি পাম্প না .বা /*বা *বা অন্য ওয়াইল্ডকার্ড যা আপনার অপারেটিং সিস্টেম মুছে ফেলতে নির্ঝর পারে।

"--Yo yo" নামে একটি ফাইল তৈরি করুন

eric@dev ~ $ touch -- "--yo yo"
eric@dev ~ $ ls
bin  --yo yo

প্রথমে এটি সন্ধানের সাথে সন্ধান করুন:

eric@dev ~ $ find . -name "*--yo yo*"
./--yo yo

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

তারপরে তাদের মুছে ফেলার জন্য-মুছে ফেলা বিকল্পটি পাস করুন:

eric@dev ~ $ find . -name "*--yo yo*" -delete
eric@dev ~ $ ls
bin  

আয়ানান্দ চলে গেছে।


2

মিডনাইট কমান্ডার ( mc) সবচেয়ে সহজ, কেবল এটিকে নির্দেশ করুন এবং এফ 8 টি চাপুন;)


3
ওপি একটি কমান্ড লাইন (সিএলআই) সমাধান চায়।
ফ্রান্সেস্কো টার্কো

1
মিডনাইট কমান্ডার হ'ল একটি সি এল এল সমাধান। এটি ইনস্টল করার জন্য কেবল আপনার প্যাকেজ ম্যানেজারটি ব্যবহার করুন। (এটি এমনকি SSH- র মাধ্যমে কাজ করে ...) en.wikipedia.org/wiki/Midnight_Commander
daviewales

6
কেমন আছে apt-get install mc || yum install mc; mc বিভিন্ন নির্দেশক তীরচিহ্নগুলি এবং F8 কি তুলনায় অনেক সহজ rm ./--help?
জোশ

3
@daviewales: মধ্যরাত্রি কমান্ডার হয় শুরু কম্যান্ড লাইন থেকে, এবং এটি সঞ্চালিত হয় টার্মিনালে কিন্তু মধ্যরাত্রি কমান্ডার মধ্যে সব কীবোর্ড ক্রিয়া CLI (কমান্ড লাইন ইন্টারফেস) থেকে নয় - তারা মধ্যরাত্রি কমান্ডার এর ইন্টারফেস থেকে। - সাধারণত, কমান্ড লাইন ইউটিলিটিগুলি কোনও স্ক্রিপ্টের মধ্যে চালানো যেতে পারে (ব্যতিক্রম কমান্ড লাইন ইতিহাস)
পিটার.ও

1

এই থ্রেডটি খুঁজে পাওয়ার আগে আমি এখানে একটি সমাধান ব্যবহার করেছি। 'সম্পাদনা' ডিরেক্টরিতে
ব্যবহার করুন vim:

vim .

তারপরে (ভিমে) আপনার ফাইলটি নির্বাচন করুন, ডেল হিট করুন এবং মোছার বিষয়টি নিশ্চিত করুন।
যখন আপনার সাথে ভিম ছাড়ুন:q


0

আপনি কি ডিরেক্টরিটির নামটি উপসর্গ হিসাবে যুক্ত করার চেষ্টা করেছেন:

$ rm ./-filename.txt dirname/-filename2.txt
$ mv ./-filename.txt filename.txt
$ cp teste ./-teste

সাধারণভাবে ফাইলটির উপসর্গ হিসাবে ডিরেক্টরি ব্যবহার করে পার্সার ফাংশন দ্বারা কমান্ড বিকল্প হিসাবে "বিয়োগ" অক্ষরটির ভুল ব্যাখ্যা এড়াতে সহায়তা করে।


1
আমি বিশ্বাস করি এটি ইতিমধ্যে পূর্বের উত্তরে wasাকা ছিল ।
কুসালানন্দ

-3

আপনি যদি ফাইলটির নাম পরিবর্তন করতে চান -.bar, (এমভি কাজ করবে না), চেষ্টা করে দেখুন:

cat >foo.bar <-.bar

কমান্ডটি ব্যবহার করার আগে:

rm -- -.bar

আপনার foo.bar এ মূল ফাইলের বিষয়বস্তুগুলি পরীক্ষা করতে সক্ষম হওয়া উচিত


4
ফাইলটির একটি অনুলিপি তৈরি করা এটির নামকরণের জন্য খুব কার্যকর সমাধান নয়।
jw013

1
আপনি vidir ব্যবহার করতে পারে; তবে এটি সম্ভবত (বা আরও বেশি) অদক্ষ - এবং আরও বিপজ্জনক।
স্টিফেন মেনাসিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.