Dites que j'ai un répertoire nommé foo/
. Ce dossier comprend des sous-répertoires. Comment puis-je supprimer tous les répertoires vides en une seule commande?
command-line
delete
directory
justingrif
la source
la source
rm -rf <directory-name>
. Cela supprimera le répertoire, ainsi que tout son contenu, y compris les fichiers et les sous-répertoires. L'-r
option signifie supprimer récursivement, tandis que la-f
commande signifie ne pas demander avant la suppression. Si vous souhaitez être invité avant la suppression d'un répertoire / fichier, remplacez l'-f
option par l'-i
option.stdout
commande d’une commande (par exemplefind
) dans la commandestdin
de l’autre (par exemplerm
). Cependant, soyez très prudent, car elle risquerait d’effacer ou de supprimer des fichiers / répertoires que vous ne souhaitez pas supprimer. effacer! Pour plus d'informations sur cette opération, voir lesman
pages correspondant à chacune de ces commandes. Pour plus de sécurité, testez toujours de telles choses dans un répertoire temporaire avant d'essayer des choses réelles.Vous pouvez tirer parti du
rmdir
refus de la commande de supprimer les répertoires non vides et de l'find -depth
option permettant de parcourir l'arborescence de répertoires de bas en haut:(et ignorer les erreurs), ou ajouter
2>/dev/null
pour vraiment les ignorer.L'
-depth
option pourfind
commencer à chercher au bas de l'arborescence.rm -rf
supprimera tous les fichiers du répertoire (et ses sous-répertoires, et ....) ET tous les répertoires et tout.la source
Supprime tous les répertoires vides. Cela produira une erreur pour chaque répertoire et fichier non vide, pour éviter que ces erreurs encombrent votre terminal, utilisez
la source
rmdir * 2>/dev/null || true
. (La méthode find (1) est préférable pour les scripts, mais pour une autre raison: car elle exprime mieux ce que vous voulez faire.)$HOME
. Avec un sourire diabolique.Car si vous souhaitez uniquement supprimer les sous-répertoires directs de
foo/
.la source
Approche python
Cela fonctionne comme suit:
os.walk()
fonction pour parcourir récursivement l'arborescence. À chaque itération,r
le dossier en cours auquel nous accédons est défini. Ils
contient la liste des répertoiresr
etf
contient la liste des fichiers de ce dossier. Bien sûr sif
ets
sont vides, nous savons quer
c'est vide.empty
la liste de tous les répertoires vides, en fonction de l'évaluation indiquée ci-dessus.map()
est utilisée pour exécuteros.rmdir()
chaque élément de laempty
liste. La compréhension de la liste pourrait être utilisée aussi bien que la solution de rechange.En tant que script, ce serait comme suit:
la source
/bin/sh
seulement et Python est en fait un langage plus élégant que ces deux-là