(Risolto) -bash: /bin/mv: Argument list too long

26 nov 2021 1 min di lettura
(Risolto) -bash: /bin/mv: Argument list too long
Indice dei contenuti


Introduzione

Uno dei miei server di sviluppo contiene milioni di file in una singola directory. Per liberare lo spazio su disco, abbiamo deciso di spostare su di essi una nuova cartella creata su un altro disco collegato allo stesso sistema. Quando ho provato a spostare il file con il comando mv, ho ricevuto il seguente errore:

-bash: /bin/mv: Argument list too long

L'errore "Elenco argomenti troppo lungo" si verifica generalmente quando si passa un numero elevato di parametri a un singolo comando. Una variabile di sistema ARG_MAX definisce la lunghezza massima dei caratteri degli argomenti in un comando shell.

La soluzione

La soluzione rapida è utilizzare l'utilità della riga di comando xargs o trovare il comando con -exec … {}. Entrambi i comandi interrompono un comando di grandi dimensioni in uno più piccolo e completano il lavoro senza errori.

Utilizzo di find with xargs – Il seguente comando sposterà tutti i file con estensione .txt nella directory di destinazione:

find . -name '*.txt' | xargs mv --target-directory=/path/to/dest_dir/ 

Utilizzo di find con exec: puoi anche utilizzare exec per eseguire la stessa attività:

find . -name '*.txt' -exec mv {} /path/to/dest_dir/ \;

I comandi sopra predefiniti navigheranno ricorsivamente alle sottodirectory. Per limitare la ricerca solo alla directory corrente, utilizzare -maxdepth seguito dal numero limite alle sottodirectory:

find . -name '*.txt' -maxdepth 1 -exec mv {} /path/to/dest_dir/ \;

Puoi trovare il limite massimo con il comando getconf ARG_MAX sulla shell.

Conclusione

In questo tutorial abbiamo visto come risolvere l'errore: "-bash: /bin/mv: Argument list too long"

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.