GNU/Linux >> Linux Esercitazione >  >> Linux

Impossibile rimuovere i file dalla directory con l'errore "Elenco di argomenti troppo lungo"

Il problema

Durante il tentativo di elencare o interagire con un numero elevato di file dalla riga di comando, viene visualizzato il seguente errore:

$ ls -l *.xml | wc -l
bash: /bin/ls: Argument list too long
0
$ rm *.xml
bash: /bin/rm: Argument list too long

o quando si tenta di eliminare un numero elevato di file utilizzando il comando trova, non riesce con il seguente messaggio di errore:

$ find /u01/oracle/apps/fs1/EBSapps/appl/xdo/12.0.0/temp/*.xml -mtime +120 -exec rm -v {} \;
bash: /usr/bin/find: Argument list too long

La soluzione

C'è un limite grande ma finito alla riga di comando imposto dal kernel e gli errori mostrati sopra indicano che il limite è stato raggiunto.

Per ovviare a questo problema, è possibile utilizzare xargs che accetta un elenco di nomi di file dal suo input standard ed esegue il comando su di essi. Puoi usare "trova" in combinazione con "xargs" come di seguito:

# find . -type f -name '*.xml' | xargs rm

NOTA :Il comando sopra eliminerà tutti i file con estensione .xml nella directory corrente senza alcuna conferma. Ti consiglierei di eseguire prima il backup dei file necessari prima dell'esecuzione. È sempre bene verificare su macchina di prova e verificare prima di procedere sulla macchina di produzione.


Linux
  1. Ubuntu - Elenco di argomenti troppo lungo?

  2. Installa/rimuovi l'elenco dei pacchetti dalla riga di comando con Apt-get?

  3. trova e rimuovi i file con spazio usando il comando trova su Linux

  4. Errore elenco argomenti troppo lungo per i comandi rm, cp, mv

  5. bash:/bin/tar:elenco di argomenti troppo lungo durante la compressione di molti file con tar

Come rimuovere una directory in Linux

Come rimuovere directory e file utilizzando Linux

Rimuovi directory in Linux - Come eliminare una cartella dalla riga di comando

Come elencare i file in modo ricorsivo in Linux

Comando Linux ls - Elenca file

Nozioni di base sulla riga di comando di Linux:lavorare con file e directory