2012-08-13 19 views
17

Se si esegue il comando mv folder2/*.* folder, viene visualizzato l'errore "Elenco argomenti troppo lungo".Spostamento di un numero elevato di file

Ho trovato alcuni esempi di ls e rm, che si occupano di questo errore, utilizzando find folder2 -name "*.*". Ma ho problemi ad applicarli a mv.

+0

questa domanda è chiesto e ha risposto qui in S.O. su base settimanale. Si prega di imparare come cercare prima di chiedere. In bocca al lupo. – shellter

+0

@shellter Trovo alcuni esempi simili, ma come ho detto, tutti sono esempi di 'ls' e' rm'. – DrXCheng

+1

@shellter, se ci sono così tanti duplicati, cercane uno e vota per chiudere. –

risposta

47
find folder2 -name '*.*' -exec mv {} folder \; 

-exec eseguito alcun comando, {} inserisce il nome del file trovato, \; segna la fine del comando exec.

+0

Grazie per la risposta, mi chiedo quanti file potrebbero spostare mv. Qual è il limite di conteggi dei file per il lavoro di mv. – Thunder

12

Le altre risposte find funzionano ma sono orribilmente lente per un numero elevato di file, poiché eseguono un comando per ogni file. Un approccio molto più efficiente è o da usare + alla fine del find oppure usa xargs:

# Using find ... -exec + 
find folder2 -name '*.*' -exec mv --target-directory=folder '{}' + 

# Using xargs 
find folder2 -name '*.*' | xargs mv --target-directory=folder 
+0

Concordato normalmente, ma se un 'mv' dritto genera un errore di" elenco di argomenti troppo lungo ", dubito che uno di quelli creati lungo usando' find' funzionerà. –

+1

Non sono sicuro di seguirlo. Questo è il punto intero di '+' alla fine di 'find'. Se lo usi, 'find' si comporta esattamente come' find | combinazione di xargs'. – Idelic

+0

La shell ha errato quando l'OP ha tentato di spostare tutti i file contemporaneamente. Sia 'find' che' xargs' alla fine eseguono lo stesso comando di shell per eseguire effettivamente la mossa, quindi è probabile che eseguano anche l'errore. Questo è il motivo per cui ho suggerito il metodo one-to-a-time anche se è più lento. –

Problemi correlati