GNU/Linux >> Linux Esercitazione >  >> Linux

Come risolvere /bin/rm:impossibile eseguire [Lista di argomenti troppo lunga]

Il comando rm viene utilizzato in Linux per eliminare file e directory. Può essere utilizzato per eliminare alcuni file specificando ciascun nome di file, oppure può essere utilizzato con il -r argomento (ricorsivo ) per eliminare una directory e l'intera struttura ad albero delle directory che si trova al di sotto di essa.

La sintassi da utilizzare per comando rm è:

$ rm <file1> <file2> ... <fileN> 
$ rm -r <directory1> <directory2> ... <directoryN> <target_directory>

Elimina file e directory in Linux

Queste sintassi possono anche essere combinate per eliminare file e directory in una volta sola:

$ rm -r file1 file2 file3 directory1 directory2

Puoi anche specificare i nomi di file e directory con caratteri jolly, se i nomi sono simili, ad esempio, inizio, fine o contengono lo stesso modello nel loro nome. Ciò è particolarmente utile quando è necessario rimuovere un gran numero di file con la stessa estensione.

Ad esempio, per eliminare tutti i file il cui nome inizia con la stringa "file ', possiamo eseguire:

$ rm file*

Allo stesso modo, per eliminare tutti i file con estensione '.txt' , possiamo eseguire:

$ rm *.txt

Fondamentalmente ciò che fanno i caratteri jolly è:posizionare tutti i file o le directory che soddisfano il modello di caratteri jolly come argomenti per rm . Quindi in teoria non c'è limite al numero di argomenti per rm comando.

Eliminazione di un numero elevato di file:errore "Elenco argomenti troppo lungo"

Anche se teoricamente "rm ' non c'è limite al numero di argomenti, c'è un limite predefinito al numero massimo di argomenti con cui un singolo comando può lavorare.

Questo è un limite definito nel sistema Linux ed è basato sulla dimensione dello stack del sistema. Quindi, se un pattern con caratteri jolly inserisce decine di migliaia di file o directory come argomenti, il programma genera un errore:"Lista di argomenti troppo lunga “.

Prendiamo un esempio di una cartella che contiene circa 2,5 lac (250.000 ) file.

$ ls -l | wc -l
$ ls | head

Proviamo a rimuoverli con un carattere jolly.

$ rm file*

Quindi dà l'errore di cui sopra. Vediamo ora come possiamo risolvere questo errore.

Soluzione:usa il comando Trova con argomento '-exec' per eliminare migliaia di file

Il comando trova fondamentalmente cerca i file nelle directory in base a diversi parametri, come il modello del nome del file, l'estensione del file, ecc.

Quindi utilizziamo il '-exec' parametro di 'trova' che ti consentirà di eseguire qualsiasi comando sull'output di trova .

$ find . -maxdepth 1 -name "<filename_pattern>" -exec rm -r {} \;

Qui, il primo argomento, '.' (directory corrente) è la directory in cui trovare i file. Se i file da un'altra directory devono essere rimossi, devi specificare qui il percorso di quella directory.

L'argomento '-maxdepth 1' considera solo i file e le directory nella directory corrente. Senza specificare questa profondità, il comando trova cercherà inutilmente tutte le sottodirectory.

L'argomento "-name" viene utilizzato per trovare file e directory con uno schema di stringhe. Il "modello_nome_file ' specifica il modello di stringa. Quindi specifichiamo il ‘rm -r‘ comando dopo un argomento '-exec' .

Le parentesi aperte '{ }' sono un segnaposto per l'argomento che deve essere utilizzato dall'output di find.

$ find . -maxdepth 1 -name "file*" -exec rm -r {} \;

Come possiamo vedere, tutti i file sono stati eliminati. Lo stesso comando può essere utilizzato per eliminare le directory in blocco, poiché stiamo già passando il '-r' argomento.

Conclusione

In questo articolo abbiamo appreso del comando comando rm e come il problema "Elenco di argomenti troppo lungo ' può essere gestito utilizzando 'rm' combinato con "trova ' comando.

Se hai commenti o domande, faccelo sapere nei commenti qui sotto!


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Come fare eco a un botto!?

  3. Linux – Unire /usr/bin e /usr/sbin in /bin (gnu/linux)?

  4. Perché /bin/sh punta a /bin/dash e non a /bin/bash??

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

Come eseguire file .bin e .run in Debian

Come eseguire file .bin e .run in Ubuntu

Come risolvere questo pasticcio apt?

Differenza tra /bin e /usr/bin

Spostato il contenuto di /bin in /usr/bin, è possibile annullare?

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?