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.