फ़ाइल मिलान पैटर्न को हटाएं


32

मुझे सभी उपखंडों में सभी फ़ाइलों को पुन: हटाने की आवश्यकता है जहां फ़ाइल नाम में एक संख्या है, जिसके बाद एक संख्या 'x' और उसके बाद एक संख्या है, कम से कम दो बार।

उदाहरण:

मैं इन फ़ाइलों को निकालना चाहता हूँ:

'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 rmमेरे लिए बश में विंडोज पर काम किया। लेकिन इसने किया: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 कर विंडोज पर काम करते हैं। अगर कुछ काम नहीं करता है, तो यह उनके उपयोग के कारण नहीं है।
गिल्स एसओ- बुराई को रोकना '

क्या यह विंडोज के साथ भी काम करेगा?
CodyBugstein

यदि आपके पास यूनिक्स उपयोगिताओं जैसे कि Cygwin या GNUWin32 का पोर्ट है तो यह काम करेगा। जाहिर है यह विंडोज पर बॉक्स से बाहर काम नहीं करेगा। ध्यान रखें कि विंडोज में एक असंबंधित प्रोग्राम है find, इसलिए सुनिश्चित करें कि यूनिक्स उपयोगिताओं में पहले हैं PATH
गिल्स एसओ- बुराई को रोकना '

0

सही आदेश है:

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

यह केवल फाइलों को नामों से लेगा: 'aaa-12x12.jpg', लेकिन 'aaa-12x12red.jpg' नहीं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.