আরএম -f বিকল্প বিকল্প


10

আমি একটি কমান্ড লাইন চালাতে চাই:

cd ~/www/tmp/; rm -P 2*

2 দিয়ে শুরু করে কোনও ফাইল না থাকলে আমি একটি ত্রুটি পেয়েছি।

আপনি ভাববেন যে আমি ব্যবহার করতে চাই -f, তবে:

-f      Attempt to remove the files without prompting for confirmation, regardless of the file's permissions.  If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error.

আর আমি কি ফাইল permissions- যদি সেখানে অদ্ভুত কিছু ঘটছে, আমি পরিত্যাগ কমান্ড পছন্দ যত্নশীল। আমি কেবল 'অস্তিত্ব নেই' ত্রুটিগুলি দমন করতে চাই।

আমি 'আরএম ত্রুটিগুলি' সহ আরও কিছু প্রশ্ন দেখেছি এবং এই দুটি প্রাসঙ্গিক বলে মনে করি (প্রবন্ধ) প্রাসঙ্গিক:

তাদের নাম দিয়ে ফাইল এবং ডিরেক্টরি মুছুন। অনুরূপ কোন ফাইল বা ডিরেক্টরি নেই

তবে, আমি এই প্রশ্নের উত্তরে যা চলছে তা বুঝতে পারি না এবং জানি না যে আমার এটির দরকার আছে?

touchহ্যাক এই প্রশ্নে প্রস্তাবিত:

কোনও ফাইল অনুপস্থিত থাকার পরে কি আরএম রিপোর্ট করবেন না?

কার্যক্ষম বলে মনে হচ্ছে না, কারণ আমি মনে করি না যে আমি পারফরম্যান্স হিট করতে পারছি না (তবে আপনি কোন ধরণের পারফরম্যান্স হিট নেবেন? - যেমন: এটি কি যুক্তিসঙ্গতভাবে স্কেলযোগ্য কৌশল, বা আমি খুব খারাপ অভ্যাসগুলি শিখছি?)

আমি নিশ্চিত না যে আমি if-thenকমান্ড লাইনের মধ্যে কীভাবে করব ।

সাধারণ কমান্ড লাইনের কাট-এন-পেস্ট ক্লিনআপের জন্য অন্য কোনও বিকল্প আছে কি?

find -deleteআমার ক্ষেত্রে ভাল কাজ করবে ? যদি তাই হয় তবে কেন?


প্রশ্নে ত্রুটি:

rm: 2*: No such file or directory

1
ত্রুটিটি আপনার শেল থেকে, না rm, তাই আপনাকে কী তা বলতে হবে।
মাইকেল হোমার

আপনি কি zshআপনার ইন্টারেক্টিভ শেল হিসাবে ব্যবহার করছেন ? আপনি একটি No matches foundত্রুটি পাচ্ছেন ?
কুসালানন্দ

2
@ মিশেলহোমর নং, ত্রুটিটি আরএম থেকে হয়েছে। শেলটি কেবল স্ট্রিংগুলিতে 2*ফাইলের তালিকায় প্রসারিত না হয়ে rm এ চলে গেছে । প্রশ্নে ত্রুটিটি দেখুন: এটি বলেছে যে আরএম অভিযোগ করছে, শ / বেস / জেডএস / ... নয়
ডায়ালাল 24

উত্তর:


13

কেবলমাত্র বিদ্যমান নিয়মিত ফাইলগুলির rm -Pজন্য কল করতে যাদের নাম ডিরেক্টরিতে একটি প্যাটার্নের সাথে মেলে (তবে নীচে নয়):

find directory -maxdepth 1 -type f -name 'pattern' -exec rm -P {} +

যেমন,

find ~/www/tmp/ -maxdepth 1 -type f -name '2*' -exec rm -P {} +

কেবল নন-ডিরেক্টরি মেলানোর জন্য, ! -type dএর জায়গায় ব্যবহার করুন -type f। পার্থক্যটি হ'ল ! -type dফাইল ধরণের বিস্তৃত পরিসরের জন্য এটি সঠিক হবে (প্রতীকী লিঙ্ক, নামযুক্ত পাইপ, সকেট ইত্যাদি) for

যেহেতু আপনি পাওয়া ফাইলগুলিতে কিছু শর্তের জন্য অনুরোধ করতে চান তাই আপনার যেহেতু এটি কাজ করে তার পরিবর্তে ব্যবহার করা উচিত নয়-delete-exec rmrm -f

পুনঃনির্বাচিতভাবে উপ-ডিরেক্টরিগুলিতে দেখতে -maxdepth 1দিতে সরান find


3
যদিও ! -type dকাছাকাছি হতে পারে rm 2*, আমি মনে করি?
মুড়ু

সুতরাং, আমাকে এই কার্যকারিতাটি পেতে find ~/www/tmp/ -maxdepth 1 -type f -name '2*' -exec rm -P {} +
পি

@ ব্যবহারকারী 3082 হ্যাঁ, আমি ভুলে গিয়েছিলাম যে -Pআপনিও ব্যবহার করতে চেয়েছিলেন ।
কুসালানন্দ

ধন্যবাদ @ মুরু, আমি আসলে চাই -type f, তবে কীভাবে rmএইভাবে কাজ করা যায় তা জানতাম না - সুতরাং @ কুশালানাদার পরামর্শটি স্পট-অন ছিল, এবং পার্থক্য / ব্যাখ্যা শেখার পক্ষে দুর্দান্ত।
ব্যবহারকারী 3082

@ ব্যবহারকারী 3082 আপনি সম্ভবত আপনার শেলের প্রসারিত গ্লোববিং (উদাহরণস্বরূপ, rm 2*(.)zsh এ) ব্যবহার করতে চান।
মুড়ু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.