ফাইলের সাথে মেলে প্যাটার্ন মুছুন


32

আমাকে সমস্ত সাবডিয়ারের সমস্ত ফাইল পুনরাবৃত্তভাবে মুছে ফেলতে হবে যেখানে ফাইলের নামটিতে একটি 'এক্স' এর পরে একটি নম্বর থাকবে, কমপক্ষে দু'বার।

উদাহরণ:

আমি এই ফাইলগুলি সরাতে চাই:

'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'

তবে আমি এই ফাইলগুলি সরাতে চাই না:

'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'

আমি কীভাবে এটি করতে পারি (ব্যাশ শেল থেকে)

উত্তর:


61

একটি স্ট্রিংতে "একটি সংখ্যার পরে একটি সংখ্যার পরে xএকটি সংখ্যা" থাকে এবং কেবল যদি এতে একটি সংখ্যার পরে একটি সংখ্যার পরে থাকে x, অর্থাত্ যদি এটিতে প্যাটার্নের সাথে মিলে একটি স্ট্রিং থাকে [0-9]x[0-9]। সুতরাং আপনি যে ফাইলগুলির নামটির সাথে মেলে সেই ফাইলগুলি সরাতে চাইছেন *[0-9]x[0-9]*[0-9]x[0-9]*.jpg

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -delete

আপনার findযদি না থাকে তবে ফাইলগুলি মুছতে -deleteকল করুন rm

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -exec rm {} +

2
ধন্যবাদ! 12.000 ফাইল আমি 2 সেকেন্ড চলে গেছে। এটি আমাকে কিছু ম্যানুয়াল শ্রম বাঁচিয়েছে!
মিক্কেলব্রাম

আমরাও -deleteনা -exec rmWindows এ ব্যাশ আমার জন্য কাজ করেন। তবে এটি করেছে:find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' | xargs rm
তমলিন

2
@ টমলিন ব্যবহার করুন -print0এবং xargs -0অন্যথায় কমান্ডটি ফাঁকা স্থান বা একক উদ্ধৃতি সম্বলিত ফাইলের নাম সহ ব্যর্থ হবে। কিন্তু -delete-exec rm কি Windows এ হবে। যদি কিছু কাজ না করে তবে এটি তাদের ব্যবহারের কারণে নয়।
গিলস 'অশুভ হওয়া বন্ধ করুন'

এটি কি উইন্ডোজের সাথেও কাজ করবে?
কোডি বাগস্টিন

আপনার যদি সাইগউইন বা জিএনইউউইন 32 এর মতো ইউনিক্স ইউটিলিটিগুলির একটি বন্দর থাকে তবে এটি কাজ করবে। স্পষ্টতই এটি উইন্ডোজের বাক্স থেকে কার্যকর হবে না। উইন্ডোজের একটি সম্পর্কিত সম্পর্কযুক্ত প্রোগ্রাম রয়েছে findকিনা সেদিকে খেয়াল রাখুন, সুতরাং ইউনিক্স ইউটিলিটিগুলি প্রথমে রয়েছে কিনা তা নিশ্চিত হয়ে নিন PATH
গিলস 'অশুভ হওয়া বন্ধ করুন'

0

সঠিক কমান্ডটি হ'ল:

find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'

এটি কেবল নামের সাথে ফাইলগুলি দখল করবে: 'aaa-12x12.jpg', তবে 'aaa-12x12red.jpg' নয়

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