Hai sentito parlare del comando rmdir, ma non sai esattamente a cosa serve? Con questo comando possiamo eliminare le cartelle vuote direttamente da terminale.
Vediamo come si usa il comando rmdir (con e senza opzioni) e che differenza c’è con il comando rm.
Iniziamo!
Table of Contents
Sintassi del comando rmdir
Su Linux abbiamo a disposizione due diversi comandi per l’eliminazione di file e cartelle: rmdir e rm.
Il comando rmdir
ci permette di eliminare esclusivamente le cartelle vuote.
La presenza di un comando distinto solo per l’eliminazione di cartelle vuote ci permette di fare pulizia sul disco, senza rischiare di eliminare per sbaglio elementi importanti. Non dimentichiamoci, infatti, che il comando rm è uno dei più delicati da usare.
La sintassi di base del comando è questa:
rmdir [opzioni] nome-cartella
Per esempio per eliminare la cartella “prova”, userò il comando così:
rmdir prova
Passiamo ora a vedere come si può usare il comando e che opzioni abbiamo a disposizione.
Casi d’uso del comando rmdir e delle sue opzioni
Andiamo a vedere come usare il comando rmdir e quali opzioni ci sono.
Ti mostrerò come usare il comando per eliminare cartelle vuote (anche in modo sequenziale risalendo di cartella in cartella) e poi vedremo dei casi d’uso più specifici, ad esempio come eliminare cartelle che hanno un pattern preciso nel nome.
Eliminare una cartella vuota
Possiamo usare il comando rmdir per eliminare una cartella vuota. Si usa in modo molto semplice:
rmdir nome-cartella
Nel mio esempio per eliminare la cartella “aprile”, uso il comando in questo modo:
rmdir aprile
La cartella viene eliminata e non mi viene restituito nessun output. In questo esempio ho usato il comando ls per visualizzare il contenuto della cartella prima e dopo dell’eliminazione.

Eliminare cartelle e cartelle superiori
Possiamo usare il comando rmdir per rimuovere le cartelle in modo gerarchico:
- si parte dalla cartella finale e si rimuovono le cartelle superiori (a condizione che siano vuote).
Vediamo un esempio pratico per capire come funziona.
Ho il seguente albero di cartelle:
- anno
- mese
- giorno
- mese
Suggerimento: puoi usare il comando ls -R per visualizzare gli alberi delle cartelle.
Utilizzando il comando rmdir con l’opzione p
posso eliminare la cartella indicata e tutte le cartelle superiori con la condizione che siano vuote.
Il comando si usa così:
rmdir -p cartella/sottocartella/sotto-sottocartella/
Nel mio esempio:
rmdir -p anno/mese/giorno
Nota che nell’esempio ho usato anche l’opzione -v
(vedremo meglio come usarla più avanti) per avere un output su quello che stava succedendo:
- viene eliminata una cartella alla volta a partire da quella finale, infatti, le cartelle possono essere eliminate solo se sono vuote;
- si procede fino alla cartella superiore.

Nella prima parte dell’esempio, con il comando ls -R
, ho visualizzato il contenuto delle cartelle e delle sottocartelle per verificare che fossero vuote.
Ottenere dettagli durante le rimozione delle cartelle
Come abbiamo visto nell’esempio precedente, possiamo usare l’opzione -v
(verbose) per avere dettagli durante l’eliminazione delle cartelle.
Di default se usiamo solo il comando rmdir, non avremo nessun output che ci indica che l’eliminazione è andata a buon fine. Gli unici output che riceviamo sono quelli per indicarci che c’è un errore, ad esempio se stiamo cercando di eliminare una cartella non esistente.
Se, invece, vogliamo seguire passo passo le operazioni che stiamo eseguendo da terminale, possiamo sfruttare l’opzione -v.
In questo esempio ti mostro l’eliminazione di una cartella con e senza l’opzione -v.

Se osserviamo l’esempio, possiamo notare che:
- Con il comando rmdir senza opzioni, non ricevo nessun output.
- Usando l’opzione -v mi viene indicato che è stata rimossa la cartella.
Eliminare cartelle che hanno un pattern nel nome
Quando vogliamo eseguire operazioni su file o cartelle che hanno nomi che corrispondono a determinati pattern, possiamo usare i simboli per creare delle espressioni regolari.
Due operatori utili sono:
?
– indica un singolo carattere (può essere qualsiasi carattere numerico o alfabetico);*
– indica zero o più caratteri (qualsiasi carattere).
Nel caso specifico del comando rmdir possiamo usare le espressioni regolari ad esempio per eliminare cartelle che hanno la stessa notazione nel nome.
Per esempio immaginiamo di avere queste cartelle: giorno1, giorno2, giorno3, ecc.
Per eliminare tutte le cartelle, dovrò indicare un pattern che inizia per “giorno”.
Quale simbolo devo usare? Dipende da quello che voglio ottenere.
Se voglio eliminare solo le cartelle che hanno un solo carattere dopo la stringa “giorno”, posso usare il simbolo “?”.
In questo caso userò questo comando:
rmdir giorno?
Il risultato è il seguente:
- le cartelle che hanno un solo carattere dopo giorno vengono eliminate, ma la cartella “giorno10” che ha due caratteri, non viene eliminata.
Ecco, infatti, il nostro output:

Se, nella stessa situazione di partenza, volessi eliminare tutte le cartelle che iniziano per “giorno” e hanno quindi un numero di caratteri indefinito dopo, dovrei usare il simbolo “*”:
rmdir giorno*
In questo caso viene eliminata anche la cartella “giorno”, proprio perché il simbolo “*” può indicare da 0 a più caratteri.
Nel nostro output possiamo vedere che tutte le cartelle che iniziano con “giorno” sono state eliminate:

Ignorare gli errori durante l’eliminazione
Se vogliamo eliminare una serie di cartelle, ma non vogliamo che ci venga mostrato l’errore per le cartelle non vuote, possiamo aggiungere l’opzione --ignore-fail-on-non-empty
al comando rmdir.
Il comando è il seguente:
rmdir --ignore-fail-on-non-empty nome-cartella
Se usiamo questa opzione:
- non verrà mostrato l’avviso se stiamo cercando di eliminare una cartella non vuota;
- visto che la cartella non è vuota, non verrà eliminata.
In questo esempio puoi vedere che differenza c’è usando o non usando l’opzione:

Tieni presente che questa opzione serve solo a non mostrare l’avviso, la cartella non verrà eliminata perché non è vuota. Per eliminare le cartelle non vuote, dobbiamo usare invece il comando rm.
Differenze tra rm e rmdir
I comandi rm e rmdir si possono usare per situazioni differenti. Il principale vantaggio di rmdir è che è limitato alle sole cartelle vuote: questo ci evita di fare errori ed eliminare cartelle con contenuto inavvertitamente.
In questa tabella abbiamo riassunto le principali differenze tra i due comandi.
Funzione | Comando rm | Comando rmdir |
---|---|---|
Tipo di file eliminabile | Si usa per eliminare file e cartelle. | Si usa solo per le cartelle. |
Limiti | Rimuove cartelle con contenuto e vuote. | Rimuove solo cartelle vuote. |
Opzioni | Si può usare per l’eliminazione ricorsiva con l’opzione -r (elimina la cartella ed eventuali sottocartelle con tutto il contenuto). | Si può usare per eliminare una cartella e tutte le cartelle superiori (vuote) con l’opzione -p. |
Errori durante l’eliminazione con rmdir
Se ricevi un errore provando ad eliminare una cartella con il comando rmdir, possono esserci diversi problemi:
- cartella non esistente;
- cartella non vuota;
- mancanza di permessi.
Vediamo i diversi casi.
La cartella che hai provato ad eliminare non esiste, in questo caso vedrai un errore come questo:
"rmdir: rimozione di 'aprile' non riuscita: File o directory non esistente"
La cartella che hai provato ad eliminare non è vuota e quindi non può essere cancellata con questo comando. In questo caso vedrai un errore come questo:
"rmdir: rimozione di 'aprile' non riuscita: Directory non vuota"

Un altro tipo di errore può verificarsi quando non abbiamo i permessi per rimuovere una cartella, ad esempio se stiamo provando ad eliminare la cartella associata a un altro utente e non abbiamo i permessi da super utente.
Ecco un esempio:

In questo caso, provando a eliminare la cartella vediamo l’errore:
"rmdir: rimozione di 'varie' non riuscita: Permesso negato"
Per risolverlo possiamo:
- eseguire il comando da super utente;
- modificare i permessi relative al file (con il comando chmod) o il proprietario e gruppo del file (con il comando chown).
Conclusioni
Quando vogliamo fare pulizia di cartelle vuote, il comando rmdir è la chiave al nostro problema. In questa guida ti ho mostrato le differenze che ci sono tra rmdir ed rm e in quali casi usare l’uno o l’altro comando. Inoltre, abbiamo visto degli esempi pratici per utilizzare rmdir e le sue opzioni.
Conoscevi già questo comando?
Lascia un commento