2010-10-27 4 views
64

मेरे पास लगभग 100000 फाइलें हैं, और मैं एक निर्दिष्ट स्ट्रिंग से शुरू होने वाली सभी फ़ाइलों पर कुछ फ़ंक्शन निष्पादित करना चाहता हूं, जो मेल खा सकता है हजारों फाइलें।एक निर्दिष्ट स्ट्रिंग के साथ शुरू होने वाली फ़ाइल नाम वाली सभी फाइलें खोजें जो हजारों फाइलों से मेल खाती हैं

मैं

ls mystring* 

की कोशिश की है, लेकिन इस पार्टी त्रुटि 'अत्यधिक तर्क' के साथ देता है। मेरी अगली योजना

find ./mystring* -type f 

का उपयोग करना था, लेकिन यह एक ही समस्या है।

कोड की तरह

for FILE in `find ./mystring* -type f` 
do 
    #Some function on the file 
done 

अग्रिम धन्यवाद, रिक

+0

'लूप' के बजाय, आपको 'while' में पाइप पाइप करना चाहिए। –

उत्तर

126

उपयोग

find . -name 'mystring*' 
+7

और कुछ फ़ंक्शन निष्पादित करने के लिए "ढूंढें। -नाम 'mystring *' -exec [command]" उदाहरण के लिए "ढूंढें। -नाम 'mystring *' -exec rm {} \;" – Eldar

+2

कहां {} फ़ाइल नाम के लिए प्लेसहोल्डर है :-) (ताकि आप अपने स्वयं के कार्यों का निर्माण कर सकें) –

+1

ऐसा लगता है कि सभी परिणाम * स्ट्रिंग युक्त * वापस लौटते हैं? –

17
ls | grep "^a" 

आप पत्र एक साथ शुरुआत सभी फाइलों को दे देंगे और कुछ ही नज़र आना चाहिए बस वर्तमान निर्देशिका पर काम करता है जबकि खोज उप-प्रत्यक्ष में ड्रिल करेगा डिफ़ॉल्ट रूप से ories।

मैं यह नहीं कह रहा कि यह बेहतर है - बस एक अलग कोण।

संबंधित मुद्दे

 संबंधित मुद्दे