it-swarm.com.de

Wie kann ich viele Dateien verschieben, ohne dass die Argumentliste zu lang ist?

Ich versuche, ungefähr 700.000 .jpg-Dateien in meinem Ubuntu-Server von einem Verzeichnis in ein anderes zu verschieben. Ich habe folgendes versucht:

xargs mv *  -t /var/www/html/

und

echo (*.jpg|*.png|*.bmp) | xargs mv -t /var/www/html/

und

echo (*.jpg) | xargs mv -t /var/www/html/

und

find . -name "*.jpg" -print0 | xargs mv * ../

und sie alle geben mir den gleichen Fehler:/usr/bin/xargs: Argumentliste zu lang

was soll ich machen? Bitte hilf mir. Vielen Dank :)

10
Awah Hammad

Wenn Sie find verwenden, würde ich empfehlen, das -exec-Attribut zu verwenden. Ihr Ergebnis sollte also find . -name "*.jpg" -exec mv {} /home/new/location \; sein.

Ich würde jedoch empfehlen zu prüfen, was der Befehl find zurückgibt, und den Teil exec durch Folgendes ersetzen: -exec ls -lrt {} \;

16
Jeffrey Descan

Versuchen:

find /path/to/old-directory -type f | xargs -i mv "{}" /path/to/new-directory
5
Ashwin

Sie hätten es versuchen können:

 for f in *.jpg do;
   mv -tv $f /var/www/html/
 done
 for f in *.png do;
   mv -tv $f /var/www/html/
 done
 for f in *.bmp do;
   mv -tv $f /var/www/html/
 done

sie sollten auch xargs (1) sorgfältig lesen. Ich vermute das stark

 find . -name "*.jpg" -print0 | xargs -n 1000 -I '{}' mv '{}'  ../

sollte für dich arbeiten

Zum Schluss erfahren Sie mehr über umbenennen (1) . Es ist wahrscheinlich genug für den Job.