2010-10-27 8 views
64

Ho una directory con circa 100000 file e voglio eseguire qualche funzione su tutti i file che iniziano con una stringa specificata, che potrebbe corrispondere decine di migliaia di file.Trova tutti i file con un nome file che inizia con una stringa specificata che può corrispondere a migliaia di file

ho cercato

ls mystring* 

ma questo ritorna con l'errore bash 'Troppi argomenti. Il mio prossimo piano era di usare

find ./mystring* -type f 

ma questo ha lo stesso problema.

Il codice deve essere simile

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

Grazie in anticipo, Rik

+0

Invece di un ciclo 'for', è necessario eseguire il pipe' find' in 'while'. –

risposta

126

uso

find . -name 'mystring*' 
+7

e per eseguire alcune funzioni "find. -name 'mystring *' -exec [comando]" ad esempio cancella "find. -name 'mystring *' -exec rm {} \;" – Eldar

+2

Dove {} è un segnaposto per nome file :-) (in modo da poter creare le proprie azioni) –

+1

Sembra che restituiscano tutti i risultati * contenente * la stringa? Il –

17
ls | grep "^a" 

vi darà tutti i file che iniziano con la lettera A e funziona sulla directory corrente mentre find eseguirà il drill down in sub-direct per impostazione predefinita.

Non sto dicendo che è meglio, solo un'angolazione diversa.

Problemi correlati