J'essaie de supprimer tous les fichiers et sous-répertoires d'un répertoire. J'avais l'habitude rm -r
de supprimer tous les fichiers, mais je souhaite supprimer tous les fichiers et sous - répertoires, à l'exclusion du répertoire principal lui-même.
Par exemple, j'ai un répertoire supérieur comme images
. Il contient les fichiers header.png
, footer.png
et un sous - répertoire.
Maintenant , je veux supprimer header.png
, footer.png
et le sous - répertoire, mais pas images
.
Comment puis-je faire cela sous Linux?
rm -Rf
de tous les fichiers et répertoires qu'il contient.Réponses:
Si votre répertoire de niveau supérieur est appelé
images
, exécutez-lerm -r images/*
. Ceci utilise l'opérateur glob shell*
pour s'exécuterrm -r
sur tous les fichiers ou répertoires qu'il contientimages
.la source
Pour supprimer les fichiers cachés, vous devez spécifier:
Avec les shells dont les globs incluent
.
et..
, cela entraînera une erreur commemais cela supprimera les fichiers cachés.
Une approche sans message d'erreur consiste à utiliser rechercher / supprimer avec mindepth. C'est gnu-find.
Votre recherche peut manquer du prédicat
-mindepth
ou-delete
, dans ce cas, vous pouvez faire:la source
rm .*
ne supprime pas.
ou..
et n'a pas supprimé depuis au moins 1994 pour les utilitaires GNU et probablement depuis la fin des années 70 pour UNIX . Il est extrêmement improbable que vous trouviez un système quirm .*
parcourt le système de fichiers vers le haut en dehors d'un musée.Pour supprimer tous les fichiers et répertoires (y compris ceux cachés ) d'un répertoire, vous pouvez essayer les solutions suivantes:
utiliser
ls -Ab
pour faire correspondre tous les fichiers / répertoiresutiliser
find
pour faire correspondre tous les fichiers / répertoiresou, si vous
find
ne supportez pas-delete
:supprimer le dossier, puis le recréer
en bash,
la source
rm -rf *
n'est pas sûre si vous ne connaissez pas les fichiers d'un répertoire, car un fichier commençant par-
(un trait d'union) sera interprété comme unrm
indicateur ...rm -rf ./* ./.*
Pour supprimer tous les fichiers normaux de manière récursive dans un répertoire, cette commande (en supposant que GNU ou FreeBSD
find
) est suffisante:Cela laisse tous les fichiers non normaux tels que les liens symboliques (qu'ils désignent des fichiers normaux ou non), des répertoires, des fifos, des sockets, des périphériques, etc.
Voir également:
pour supprimer des fichiers de tout type sauf le répertoire .
la source
Essayez cette version:
la source
J'utilise la
find
commande ici:Étape 1: Trouvez tous les fichiers et supprimez-les:
Exemple:
Étape 2: Trouvez tous les sous-répertoires et supprimez-les:
la source
find /path/to/directory/ -type d
comprend.
donc supprimera le répertoire lui-même. Vous devez également utiliser le-mindepth
commutateur comme d'autres l'ont dit.La question était de vider un répertoire = supprimer le contenu d'un répertoire comprenant des fichiers cachés, mais pas le répertoire lui-même. La commande find avec -mindepth 1 est en fait la meilleure façon de procéder, mais pour éviter les messages d'erreur, elle doit être associée à -maxdepth 1:
la source
La syntaxe de rm est la suivante:
Donc, vous devez indiquer explicitement le chemin approprié, par exemple
la source
Vous pouvez supprimer le répertoire en utilisant la commande suivante:
Il sera supprimer tout le répertoire après 3 / *.
Exemple sudo rm -r Téléchargements / chanson / *
Il sera supprimer tous les fichiers qui sont à l'intérieur
Downloads/song
.la source
Cela fonctionne parfaitement pour moi, testé plusieurs variantes travaillées à chaque fois.
À partir du répertoire qui contient le répertoire images.
avant:
après:
la source
mkdir images/.somedir
;touch images/.somefile
)Pour supprimer tous les fichiers et sous-répertoires du répertoire actuel, y compris ceux cachés, sans message d'erreur :
Ou, à partir du répertoire parent:
De https://serverfault.com/a/47940/269538 .
la source
Une autre option:
source: https://askubuntu.com/a/552834/56648
la source
Supprimez le dossier "test" et tous les fichiers qu'il contient:
Supprimez tous les fichiers à l'intérieur mais conservez le dossier "test":
la source
cd dans le dossier puis exécutez la commande suivante:
la source