কমান্ড লাইনে নিয়মিত প্রকাশের সাথে ফাইলগুলি কীভাবে মুছবেন?


18

ধরা যাক আমার কাছে FOOXX নামে 20 টি ফাইল রয়েছে যেখানে XX ফাইলের সংখ্যা, যেমন 01, 02 ইত্যাদি,

এই মুহুর্তে, আমি যদি 10 নম্বরের চেয়ে কম সমস্ত ফাইল মুছতে চাই তবে এটি সহজ এবং আমি কেবল একটি ওয়াইল্ডকার্ড ব্যবহার করি, যেমন rm FOO0 *

তবে, যদি আমি নির্দিষ্ট ফাইলগুলি আইএনএ ব্যাপ্তি, যেমন 13-15 মুছতে চাই তবে এটি আরও কঠিন হয়ে যায়।

আরএম এফপিপি [13-15] কাজ করে না, এবং আমাকে জিজ্ঞাসা করে আমি সমস্ত ফাইল মুছতে চাই কিনা। আরএম এফইউ 1 এর মতো [3-5] এফও 1 দিয়ে শুরু হওয়া সমস্ত ফাইল মুছতে চায়

সুতরাং, এই জাতীয় ফাইলের বিস্তৃতি মুছার সর্বোত্তম উপায় কী?

আমি বাশ এবং zsh উভয়ই দিয়ে চেষ্টা করেছি, এবং আমি মনে করি না যে এ জাতীয় প্রাথমিক কাজের জন্য তারা এতটা পৃথক?


"... আরএম এফইউ 1 [3-5] এফইও 1 দিয়ে শুরু হওয়া সমস্ত ফাইল মুছে ফেলতে চায়" এটি কোনও মানে করে না, এবং অবশ্যই এখানে এটি হয় না।
Ignacio Vazquez-Abram 12

@ ইগনাসিও হ্যাঁ - আমি দেখতে চাই চরিত্রের সেটটিতে সেই জোটের ক্রম রয়েছে!
কুমার্স

উত্তর:


31

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

আরএম FOO1 1 3..5 .5

অথবা

আরএম এফইউ 1 {3,4,5}

FOO13, FOO14 এবং FOO15 মুছতে।

বাশ সম্প্রসারণ বন্ধনী এখানে নথিভুক্ত করা হয়


2
বা এমনকি rm FOO{13..15}
Ignacio Vazquez-Abram 12

এটি কি জেডএসএইচ-এর জন্য সত্য?
জ্যাক


@ জ্যাক: bashকমান্ডগুলি zশেল কমান্ডগুলির সাবসেট গঠন করে।
অভিনবকুলকারনী

সুতরাং আমি উভয় regex এবং গ্লোব্বিং সিনট্যাক্স শিখতে হবে । হাউমাউ করে বাচ্ছা ছেলের মতো কাঁদা। :)
আদিত্য এমপি

13

ভবিষ্যতের পাঠকদের জন্য, findআদেশটি ফাইলগুলিও মুছতে পারে। আমি একই সমস্যার জন্য এটি স্থির করেছিলাম:

find . -type f -regex '...' -delete

তবে নির্বাচিত উত্তর হ'ল এই প্রশ্নের সহজতম উপকরণ।


নির্বাচিত উত্তরটি কেবল সেই ফাইলগুলির পক্ষে ভাল যা নামকরণের কনভেনশন অনুসরণ করে। আপনার উত্তরের জন্য ধন্যবাদ, আমি কেবল একটি ডিরেক্টরিতে সমস্ত বস্তু ফাইল মুছতে পারি। (আমার ক্ষেত্রে আমি কেবল সাথে গিয়েছিলাম find . -name "*.o" -deleteএবং এটি একটি কবজির মতো কাজ করেছিল)
জন হ্যামিল্টন

6

ls | grep regex | xargs আরএম


6
আপনার find -regex ... -print0 | xargs -0 ...এটির জন্য ব্যবহার করা উচিত , অন্যথায় এটি ফাঁকা ফাইল ফাইলগুলির জন্য ব্যর্থ।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1
অবশ্যই, আপনি যদি ব্যবহার করতে চলেছেন findতবে আপনি পাশাপাশি ব্যবহার করতে পারেন -exec
Ignacio Vazquez-Abram 13

আমার ক্ষেত্রে ফাইলগুলির ফাঁকা স্থান রয়েছে এবং ডিলিমিটার পরিবর্তন করে ফাঁকা সমস্যার সমাধান করে: এলএস | grep regex | xargs --delimiter = '\ n' rm
আনেকে


@ সতর্কবাণী যুক্ত করার জন্য @evilsoup, +1, কিন্তু, কে একটি ফাইলের নামে একটি নতুন লাইন প্রবেশ করান?
আইলিয়ান ওনোফ্রেই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.