J’avais l’impression que
rm -r *.xml
supprimerait tous les fichiers du parent et de l’enfant, cependant:
*.xml: No such file or directory
La page de manuel de rm dit:
-r, -R, --recursive remove directories and their contents recursively
Cela signifie que le flag -r
attend un répertoire. Mais *.xml
n’est pas un répertoire.
Si vous souhaitez supprimer tous les fichiers .xml du répertoire actuel de manière récursive, voici la commande:
find . -name "*.xml" -type f|xargs rm -f
Je suppose que vous voulez supprimer tous *.xml
fichiers *.xml
manière récursive (dans tous les sous-répertoires). Pour ce faire, utilisez find
:
find . -name "*.xml" -exec rm {} \;
Sur un côté, la suppression récursive me fait peur. Les jours les plus sains, j’ai tendance à précéder cette étape avec:
find . -name "*.xml"
(sans le bit -exec
) juste pour voir ce qui pourrait être supprimé avant de faire le saut. Je vous conseille de faire la même chose. Vos fichiers vous remercieront.
En lisant cette réponse sur la recherche de répertoires vides sous unix , je viens d’apprendre sur l’action -delete:
-delete Delete files; true if removal succeeded. If the removal failed, an error message is issued. If -delete fails, find's exit status will be nonzero (when it even‐ tually exits). Use of -delete automatically turns on the -depth option. Warnings: Don't forget that the find command line is evaluated as an expression, so putting -delete first will make find try to delete everything below the start‐ ing points you specified. When testing a find command line that you later intend to use with -delete, you should explicitly specify -depth in order to avoid later sursockets. Because -delete implies -depth, you cannot usefully use -prune and -delete together.
Source: homme trouver
Cela signifie que vous pouvez également supprimer tous les fichiers XML de manière récursive comme ceci:
find . -name "*.xml" -type f -delete
plus belle façon, bien que celle-ci soit moins prise en charge dans les systèmes unix:
rm -rf */*.xml
Cela supprimera les fichiers xml de tous les sous-répertoires de votre répertoire actuel.
ZSH récursive globbing à la rescousse!
Invoquer zsh: zsh
Assurez-vous d’être dans le répertoire où vous avez l’intention d’être
Liste en premier: ls **/*.xml
Supprimer: rm **/*.xml
Je vais résister à la forte tentation de bash bash
, et juste pointer vers les docs zsh pertinents sur le sujet ici .
Un moyen facile de faire est
rm -f * .xml
Cela supprimera tous les fichiers .xml du répertoire actuel.