2010-10-27 16 views
64

Yaklaşık 100.000 dosya içeren bir dizim var ve belirtilen bir dizeyle başlayan tüm dosyalarda bazı işlevleri gerçekleştirmek istiyorum. on binlerce dosya.Bir dosya adı ile tüm dosyaları, binlerce dosyayla eşleşebilecek belirli bir dizeyle başlayarak bulun.

Ben

ls mystring* 

denedi ama bu bash hatası 'Çok fazla argüman' ile döner. Bir sonraki planım

'u kullanmaktı ancak bu aynı sorunu içeriyordu.

kod

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

önceden teşekkür, Rik

+0

'for' döngüsü yerine,' find' sözcüğünü 'while' şeklinde eklemelisiniz. –

cevap

126

kullanım

find . -name 'mystring*' 
+7

ve "find. -name 'mystring *' -exec [command]" işlevini yürütmek için bir işlev yürütebilirsiniz. Örneğin "find. -name" mystring * '-exec rm {} \; – Eldar

+2

{} dosya adı :-) için bir yer tutucudur (böylece kendi eylemlerinizi oluşturabilirsiniz) –

+1

Bu, * dizesini içeren tüm sonuçları * döndürecek gibi görünüyor mu? –

17
ls | grep "^a" 

size mektup A 'ile başlayan tüm dosyaları verecek ve şuna benzer gerekiyor sadece mevcut dizinde çalışır, oysa buluntu doğrudan varsayılan olarak ories.

Daha iyi olduğunu söylemiyorum - sadece farklı bir açı.

İlgili konular