Le plus proche que j'ai obtenu est
# rm /path/to/directory/*.*
mais cela ne fonctionne pas pour les fichiers qui n'ont pas d'extension...
Le plus proche que j'ai obtenu est
# rm /path/to/directory/*.*
mais cela ne fonctionne pas pour les fichiers qui n'ont pas d'extension...
Linux n'utilise pas d'extensions. C'est au créateur du fichier de décider si le nom doit avoir une extension. Linux examine les premiers octets pour déterminer le type de fichier auquel il a affaire.
Pour supprimer tous les fichiers non cachés * dans un répertoire utiliser :
rm /path/to/directory/*
Cependant, cela fera apparaître une erreur pour chaque sous-répertoire, car dans ce mode, il n'est permis de supprimer que des fichiers.
Pour supprimer tous les fichiers et sous-répertoires non cachés (ainsi que tout leur contenu) d'un répertoire, utilisez la commande :
rm -r /path/to/directory/*
* Les fichiers et répertoires cachés sont ceux dont le nom commence par .
(point), par exemple : .hidden-file
o .hidden-directory/
. Notez que, dans Bash, si le dotglob
option (qui est désactivé par défaut) est défini, rm
agira également sur les fichiers cachés, car ils seront inclus dans le calcul de la valeur de l'opération. *
est développé par le Shell pour fournir la liste des arguments du nom de fichier.
Pour supprimer un dossier avec tout son contenu (y compris tous les dossiers intérieurs) :
rm -rf /path/to/directory
Pour supprimer tous les le contenu du dossier (y compris tous les dossiers intérieurs) mais pas le dossier lui-même :
rm -rf /path/to/directory/*
ou, si vous voulez vous assurer que les fichiers/répertoires cachés sont également supprimés :
rm -rf /path/to/directory/{*,.*}
Pour supprimer tous les "fichiers" d'un dossier( no retirer les dossiers intérieurs ):
rm -f /path/to/directory/{*,.*}
Avertissement : si vous avez des espaces dans votre chemin, veillez à toujours utiliser des guillemets.
rm -rf /path/to the/directory/*
est équivalente à deux rm -rf
appels :
rm -rf /path/to
rm -rf the/directory/*
Pour éviter ce problème, vous pouvez utiliser '
guillemets simples '
(empêche toutes les expansions, même des variables Shell) ou "
guillemets "
(permet l'expansion des variables Shell, mais empêche les autres expansions) :
rm -rf "/path/to the/directory/"*
Où :
rm
- signifie supprimer
-f
- signifie force ce qui est utile lorsque vous ne voulez pas qu'on vous demande si vous voulez supprimer une archive, par exemple.-r
- signifie récursif ce qui signifie que vous voulez aller récursivement dans chaque dossier et tout supprimer.Pour effacer tous les fichiers et répertoires (y compris le répertoire caché ) dans un répertoire, vous pouvez essayer ce qui suit :
supprimer le dossier, puis le recréer
rm -rf dir_name && mkdir dir_name
utiliser find
find dir_name -mindepth 1 -delete
Nous précisons ici -mindepth 1
pour exclure le répertoire dir_name lui-même.
Jetez un coup d'œil au lien suivant :
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
Si vous voulez supprimer seulement les fichiers dans le répertoire /path/to/directory vous pouvez faire
find /path/to/directory -type f -print0| xargs -0 rm
ou
find /path/to/directory -type f -exec rm '{}' \;
Vous pouvez faire des charges avec find
l'avantage est que vous pouvez lister ce qui est trouvé sans l'envoyer à rm
afin que vous puissiez voir ce qui sera supprimé avant de commencer.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.