2012-08-13 18 views
17

Wenn ich den Befehl mv folder2/*.* folder ausführen, bekomme ich "Argumentliste zu lang" -Fehler.Verschieben einer großen Anzahl von Dateien

Ich finde ein Beispiel von ls und rm, die sich mit diesem Fehler befassen, mit find folder2 -name "*.*". Aber ich habe Probleme, sie auf mv anzuwenden.

+0

Diese Frage gestellt und beantwortet hier auf S. O. auf einer wöchentlichen Basis. Bitte lernen Sie, wie Sie suchen, bevor Sie fragen. Viel Glück. – shellter

+0

@shellter Ich finde einige ähnliche Beispiele, aber wie gesagt, alle sind Beispiele für 'ls' und' rm'. – DrXCheng

+1

@Shellter, wenn es so viele Duplikate gibt, finde eins und stimme ab, um zu schließen. –

Antwort

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

-exec läuft jeder Befehl, {} fügt den gefundenen Dateinamen, \; markiert das Ende des exec-Befehl.

+0

Danke für die Antwort, ich frage mich, wie viele Dateien könnte mv verschieben. Was ist die Grenze der Datei zählt für MV zu arbeiten. – Thunder

12

Die anderen find Antworten funktionieren, sind aber furchtbar langsam für eine große Anzahl von Dateien, da sie einen Befehl für jede Datei ausführen. Ein wesentlich effizienter Ansatz ist entweder + am Ende find zu verwenden oder verwenden xargs:

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

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

Vereinbart normalerweise, aber wenn ein gerades 'mv' einen" Argumentliste zu lang "Fehler erzeugt, bezweifle ich, dass ein genauso lang gebautes' find' funktioniert. –

+1

Ich bin mir nicht sicher, ob ich folge. Das ist der Sinn des '+' am Ende von 'find'. Wenn Sie das verwenden, verhält sich 'find' genauso wie' find' Xargs' Kombination. – Idelic

+0

Die Shell wurde fehlerhaft, als das OP versuchte, alle Dateien gleichzeitig zu verschieben. Sowohl 'find' als auch' xargs' führen schließlich den gleichen Shell-Befehl aus, um die Bewegung tatsächlich auszuführen, so dass sie wahrscheinlich ebenfalls ausbrechen. Deshalb habe ich die Einzelmethode vorgeschlagen, obwohl sie langsamer ist. –

Verwandte Themen