Le plus proche que j'ai eu est
# rm /path/to/directory/*.*
mais cela ne marche pas pour les fichiers sans extension ...
command-line
rm
utilisateur784637
la source
la source
shopt -s dotglob
avant de l'exécuterrm (...)
all files
;)*.*
signifie tous les fichiers contenant.
quelque part dans le nom*a*
signifie zéro ou plusieurs caractères, suivis dea
suivis de zéro ou plus de caractères. Il égalerait les noms de fichiershappy
,apple
,a
oula
.Pour supprimer le dossier avec tout son contenu ( y compris tous les dossiers intérieurs ):
Pour supprimer tout le contenu du dossier ( y compris tous les dossiers intérieurs ) mais pas le dossier lui-même:
ou
si vous voulez vous assurer que les fichiers / répertoires cachés sont également supprimés.
Pour supprimer tous les "fichiers" de l'intérieur d'un dossier ( sans supprimer les dossiers intérieurs ):
Attention : si vous avez des espaces dans votre chemin, veillez à toujours utiliser des guillemets.
équivaut à 2
rm -rf
appels séparés :Pour éviter ce problème, vous pouvez utiliser
'
des guillemets simples'
( ne pas développer les variables shell) ou des"
doubles guillemets"
( développer les variables shell):Où:
rm
- signifie " enlever "-f
- signifie " force ", ce qui est utile lorsque vous ne souhaitez pas être invité / demandé si vous souhaitez supprimer une archive, par exemple.-r
- signifie " récursif ", ce qui signifie que vous voulez consulter tous les dossiers de manière récursive et tout supprimer.la source
rm -rf /path/to/directory/*
ne supprime pas un fichier caché dans le dossier, par exemple.htaccess
. Peutrm -rf /path/to/directory/.
- être ? Je n'ai pas essayé.rm -rf /path/to/directory/.*
ne supprime que les fichiers cachés du répertoire spécifié. En regardant le commentaire de @danjjl sur la réponse de @Rinzwind, pour supprimer également les fichiers cachés, exécutez-lesshopt -s dotglob
avant d'exécuterrm -rf /path/to/directory/*
.rm -rf /path/to/directory/.*
sur mon système, la suppression d’éléments dans/path/to
. Heureusement, je venais de sauvegarder toutes mes données sur un disque séparé. Inutile de dire que vous n'émettez PAS la commande àrm -rf /path/to/directory/.*
moins que vous n'ayez sauvegardé l'intégralité de votre ordinateur dans un emplacement séparé / sécurisé!Pour supprimer tous les fichiers du répertoire (y compris les fichiers cachés et les sous-répertoires), exécutez:
la source
./
et../
, mais qu'il supprimera tout de même les fichiers cachés.rm -r $(pwd)/{*,.*}
Si vous souhaitez supprimer uniquement les fichiers de / path / to / directory, vous pouvez le faire.
ou
Vous pouvez faire des charges avec
find
, l’avantage est que vous pouvez lister ce qui est trouvé sans le canaliser afinrm
que vous puissiez voir ce qui sera supprimé avant de commencer.la source
GNU find
en tant que-delete
prédicat. Si vous voulez toujours utiliser-exec
, substituer\;
par+
rassemblera lesrm
appels, ce qui augmentera l'efficacité.Pour supprimer tous les fichiers et répertoires (y compris ceux cachés ) d'un répertoire, vous pouvez essayer les solutions suivantes:
supprimer le dossier, puis le recréer
utilisation
find
Ici, nous
-mindepth 1
spécifions pour exclure le répertoire dir_name lui-même.Jetez un coup d'oeil au lien suivant:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
la source
Si vous souhaitez également supprimer tous les sous-répertoires et le répertoire lui-même, vous pouvez utiliser
rm -rf /path/to/directory
. Mais vérifiez toujours votre ligne avant d'appuyer sur Entrée, ce quirm -rf
peut causer beaucoup de dégâts, par exemple si vous insérez accidentellement un espace après la première barre oblique tout en ayant les permissions de super-utilisateur ...la source
Puisque cette question est constamment au sommet de Google lorsque je le recherche moi-même:
Les autres réponses souffrent de problèmes différents:
Certains d'entre eux incluent
.
et..
qui est bruyant, déroutant et ennuyeux.Certains d'entre eux oublient les fichiers cachés (fichiers commençant par un point).
Ils ne suppriment pas dans un ordre correct (le plus profond en premier) pour permettre la suppression du répertoire.
Ils descendent dans d'autres systèmes de fichiers (montés), ce qui est souvent indésirable.
Ils sont difficiles à étendre correctement avec des paramètres supplémentaires (plus de détails ci-dessous).
Donc, pour supprimer de manière récurrente tous les fichiers et dossiers d'un répertoire, procédez comme suit:
Notez que j'ai ajouté un
-xdev
argument pour empêcher la descente dans les montages (comme/proc
etc.).Pourquoi pas
-depth
ou-delete
?Bien que les gens me votent constamment pour cela, ces méthodes ont un inconvénient: elles ne semblent pas suffisamment extensibles pour autoriser
-prune
un sous-répertoire (sans introduire plus de problèmes). En contraste avec cette méthode, vous pouvez inséreravant l'
-mindepth
argument à excluresubdir
de la suppression de son contenu.la source
-depth
drapeaufind
pour cela.-delete
avecfind
?-delete
est la profondeur d'abord. Vous supposez déjà ne pas être POSIXfind
avec le-printf
, alors vous pourriez aussi bien utiliser-delete
ou-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... mais la mienne fonctionne? Pourquoi?Vous pouvez
cd
entrer dans le répertoire et ensuite exécuter la commanderm *.*
comme dans DOS si vous vous en souvenez.la source
Pour supprimer le répertoire actuel, vous pouvez par exemple utiliser
rm -d ./*
-d demande également de supprimer les répertoires.
la source