GNU/Linux >> Linux Esercitazione >  >> Linux

Come rimuovere (eliminare) la directory in Linux

Esistono diversi modi per rimuovere le directory nei sistemi Linux. Se usi un file manager desktop come Gnome's Files o KDE's Dolphin, puoi eliminare file e directory usando l'interfaccia utente grafica del manager. Tuttavia, se stai lavorando su un server headless o desideri rimuovere più directory contemporaneamente, l'opzione migliore è eliminare le directory (cartelle) dalla riga di comando.

In questo articolo, spiegheremo come eliminare le directory in Linux usando rmdir , rm e find comandi.

Prima di iniziare #

Quando si rimuove una directory utilizzando un file manager desktop, la directory viene effettivamente spostata nel Cestino e può essere facilmente recuperata.

Fai molta attenzione quando rimuovi file o directory dalla riga di comando perché una volta che la directory è stata eliminata utilizzando i comandi spiegati in questo articolo, non può essere completamente ripristinata.

Sulla maggior parte dei filesystem Linux, l'eliminazione di una directory richiede l'autorizzazione di scrittura sulla directory e sul suo contenuto. In caso contrario, verrà visualizzato l'errore "Operazione non consentita".

I nomi delle directory con uno spazio devono essere preceduti da una barra rovesciata (/ ).

Rimozione di directory con rmdir #

rmdir è un'utilità della riga di comando per eliminare le directory vuote. È utile quando vuoi cancellare una directory solo se è vuota, senza dover controllare se la directory è vuota o meno.

Per eliminare una directory con rmdir , digita il comando seguito dal nome della directory che desideri rimuovere. Ad esempio, per eliminare una directory denominata dir1 dovresti digitare:

rmdir dir1

Se la directory non è vuota, riceverai il seguente errore:

rmdir: failed to remove 'dir1': No such file or directory

In questo caso, dovrai usare il rm comando o rimuovere manualmente il contenuto della directory prima di poterlo eliminare.

Rimozione di directory con rm #

rm è un'utilità della riga di comando per eliminare file e directory. A differenza di rmdir il rm il comando può eliminare sia le directory vuote che quelle non vuote.

Per impostazione predefinita, se utilizzato senza alcuna opzione rm non rimuove le directory. Per eliminare una directory vuota, usa -d (--dir ) e per eliminare una directory non vuota, e tutto il suo contenuto usa il -r (--recursive o -R ) opzione.

Ad esempio per eliminare una directory denominata dir1 insieme a tutti i suoi contenuti, digiteresti:

rm -r dir1

Se una directory o un file all'interno della directory è protetto da scrittura, verrà richiesto di confermare l'eliminazione. Per rimuovere una directory senza che venga richiesto, usa il -f opzione:

rm -rf dir1

Per rimuovere più directory contemporaneamente, invoca rm comando, seguito dai nomi delle directory separate da uno spazio. Il comando seguente rimuoverà ogni directory elencata e il relativo contenuto:

rm -r dir1 dir2 dir3

Il -i l'opzione dice a rm per richiedere di confermare l'eliminazione di ogni sottodirectory e file. Se la directory contiene molti file, questo può essere un po' fastidioso, quindi potresti prendere in considerazione l'utilizzo di -I opzione che ti chiederà una sola volta prima di procedere con l'eliminazione.

rm -rI dir1

Per rimuovere la directory digita y e premi Enter .

rm: remove 1 argument recursively? y

Puoi anche utilizzare le normali espansioni per abbinare ed eliminare più directory. Ad esempio, per rimuovere tutte le directory di primo livello nella directory corrente che terminano con _bak , dovresti usare il seguente comando:

rm -r *_bak

L'uso di espansioni regolari durante la rimozione delle directory può essere rischioso. Si consiglia prima di elencare le directory con ls comando in modo da poter vedere quali directory verranno eliminate prima di eseguire rm comando.

Rimozione di directory con find #

find è un'utilità della riga di comando che consente di cercare file e directory in base a una determinata espressione ed eseguire un'azione su ogni file o directory corrispondente.

Lo scenario più comune consiste nell'usare find comando per eliminare le directory in base a uno schema. Ad esempio, per eliminare tutte le directory che terminano con _cache nella directory di lavoro corrente, eseguiresti:

find . -type d -name '*_cache' -exec rm -r {} +

Analizziamo il comando sopra:

  • /dir - cerca ricorsivamente nella directory di lavoro corrente (. ).
  • -type d - limita la ricerca alle directory.
  • -name '*_cache' - cerca solo nelle directory che terminano con _cache
  • -exec - esegue un comando esterno con argomenti opzionali, in questo caso rm -r .
  • {} + - aggiunge i file trovati alla fine del rm comando.

Rimozione di tutte le directory vuote #

Per rimuovere tutte le directory vuote in un albero di directory dovresti eseguire:

find /dir -type d -empty -delete

Ecco una spiegazione per le opzioni utilizzate:

  • /dir - cerca ricorsivamente nella /dir directory.
  • -type d - limita la ricerca alle directory.
  • -empty - limita la ricerca solo alle directory vuote.
  • -delete - cancella tutte le directory vuote trovate nel sottoalbero. -delete può eliminare solo directory vuote.

Usa il -delete opzione con estrema cautela. La riga di comando trova viene valutata come un'espressione e se aggiungi -delete prima opzione, il comando cancellerà tutto al di sotto dei punti di partenza specificati.

Testare sempre prima il comando senza -delete opzione e usa -delete come ultima opzione.

/bin/rm:Elenco di argomenti troppo lungo #

Questo messaggio di errore viene visualizzato quando si utilizza rm comando per rimuovere una directory che contiene un numero enorme di file. Ciò accade perché il numero di file è maggiore del limite di sistema sulla dimensione dell'argomento della riga di comando.

Esistono diverse soluzioni a questo problema. Ad esempio, puoi cd alla directory e manualmente o utilizzando un ciclo per rimuovere le sottodirectory una per una.

La soluzione più semplice è prima eliminare tutti i file all'interno della directory con find comando e quindi eliminare la directory:

find /dir -type f -delete && rm -r /dir

Conclusione #

Con rm e find puoi eliminare le directory in base a diversi criteri in modo rapido ed efficiente.

L'eliminazione delle directory è un processo semplice e facile, ma devi fare attenzione a non eliminare i dati importanti.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Come eliminare gli account utente con Home Directory in Linux

  2. Come cercare e rimuovere le directory in modo ricorsivo su Linux

  3. Come eliminare una directory e una cartella in Linux?

  4. Come rinominare una directory su Linux

  5. 5 esempi pratici per eliminare/rimuovere directory in Linux

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

Come trovare ed eliminare directory vuote in Linux

Come rimuovere file e directory in Linux

Come rimuovere file e directory su terminale Linux

Come rimuovere/eliminare file in Linux usando il comando rm

Come copiare la directory su Linux