লিনাক্সের একটি নির্দিষ্ট স্ট্রিং দিয়ে শুরু করে সমস্ত ফাইল কীভাবে সরিয়ে ফেলা যায়


36

আমাকে NAMEডিরেক্টরি ট্রিতে নামের সাথে শুরু হওয়া সমস্ত ফাইল সন্ধান করতে হবে এবং একটি শেল কমান্ড ব্যবহার করে এই ফাইলগুলি সরিয়ে ফেলতে হবে।

উত্তর:


1

নামের মধ্যে থাকা সমস্ত ফাইল মুছতে --- আপনি ব্যবহার করতে পারেন

find -name . 'name*' -exec rm {} \;

1
আপনি 'আরএম' আর্গুমেন্ট হিসাবে -f যোগ করতে পারেন যাতে আপনাকে "এক্স ফাইলটি সরানোর বিষয়ে নিশ্চিত?"
উটাহ জারহেড 14

কোন সংস্করণের grepএকটি -execসুইচ আছে?
বেন গ্রাহাম

কেন এই মন্তব্যে ডাউনটি রয়েছে?
Ultrasonic54321

64

বর্তমান ডিরেক্টরি এবং এর উপ ডিরেক্টরিগুলির সমস্ত ফাইল মুছুন যেখানে ফাইলের নাম "foo" দিয়ে শুরু হয়:

$ find . -type f -name foo\* -exec rm {} \;

এনবি: সাবধানতার সাথে ব্যবহার করুন - প্রথমে ব্যাক আপ করুন - এছাড়াও প্রথমে একটি শুকনো রান করুন, যেমন

$ find . -type f -name foo\*

মুছে ফেলা হবে এমন ফাইলগুলির নাম কেবল আপনাকে বলবে।


5
আমাকে 2 মিলিয়নেরও বেশি ফাইল মুছতে হয়েছিল এবং সমস্যায় পড়তে হয়েছিল, find . -type f -name foo\* -deleteকৌশলটি করেছিলেন
লিনাস

25

আমি এইভাবে চেষ্টা করেছি এটি আমার পক্ষে কমান্ডের নীচে চেষ্টা করছে।

rm -rf Example*

এখানে "উদাহরণ" হ'ল পাঠ্য যা সমস্ত ফাইলের জন্য সাধারণ।


4
কেন এটি সর্বোচ্চ ভোট প্রাপ্ত উত্তর নয় তা নিশ্চিত নন ....
ড্যানইম্যান

@ ড্যান দিম্যান এটি অন্য উত্তরগুলির চেয়ে 4 বছর ডলার বেশি নতুন কারণ। এটি অবশ্যই সবচেয়ে সহজ উত্তর।
জোশুকাকোকরেল

10

আপনি ব্যবহার করতে পারেন find:

find . -name "name*" -exec rm {} \;

পরিবর্তে 'নির্দিষ্ট করার পরিবর্তে।' আপনি একটি নিখুঁত পাথ নির্দিষ্ট করতে পারেন।
উটাহ জারহেড

3

সঙ্গে globstarবিকল্প (সঙ্গে সক্ষম shopt -s globstar):

rm -f **/NAME*

**/বিস্তৃতি করার ./, */, */*/, */*/*/ইত্যাদি আপনি যদি একটি থাকে তাহলে ডিরেক্টরির দিয়ে শুরু নাম NAME, কমান্ড অভিযোগ করবে rmডিরেক্টরি সরাতে পারে না, কিন্তু এটাই শেষ কথা।

লক্ষ্য করুন যে গ্লোব অনেকগুলি ফাইলের সাথে মেলে তবে এটি কমান্ড লাইনের দৈর্ঘ্যের সীমাবদ্ধতায় চলে যেতে পারে।

বিকল্প হিসাবে, rmযতটা সম্ভব কম কয়েকটি অনুরোধ সহ , তবে কোনও কমান্ড লাইনের দৈর্ঘ্যের সীমাবদ্ধতার সাপেক্ষে নয়:

find . -type f -name 'NAME*' -exec rm -f {} +

( বিবৃতিটি বন্ধ করার +পরিবর্তে লক্ষ্য করুন ))\;-exec


2

find . -name 'foo'* -type f -delete সহজ উত্তর মত মনে হচ্ছে।

-deleteকোন ফাইলটি মুছে ফেলা হবে তা দেখার আগে আপনি পতাকা ছাড়াই এটি চালাতে পারেন ।


-2

ফাইল / ফোল্ডারের "আইনের" নম্বরটি অনুসন্ধান করুন এবং তারপরে ইনোড নম্বরটি ব্যবহার করে মুছুন। নীচে একটি উদাহরণ দেওয়া হল:

ls -il
3407873 drwxr-xr-x. 2 root   root      4096 Mar 30 07:49 p

find . -inum 3407873 -exec rm -rf {} \;

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