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!