Je travaille via SSH sur un WD My Book World Edition. Fondamentalement, je voudrais commencer à un niveau de répertoire particulier et supprimer de manière récursive tous les sous-répertoires correspondant à .Apple*
. Comment dois-je m'y prendre ?
J'ai essayé
rm -rf .Apple*
et rm -fR .Apple*
ni les répertoires supprimés correspondant à ce nom dans les sous-répertoires.
Réponse acceptée :
find
est très utile pour effectuer sélectivement des actions sur un arbre entier.
find . -type f -name ".Apple*" -delete
Ici, le -type f
s'assure qu'il s'agit d'un fichier, pas d'un répertoire, et peut ne pas être exactement ce que vous voulez car il ignorera également les liens symboliques, les sockets et d'autres choses. Vous pouvez utiliser ! -type d
, ce qui signifie littéralement pas de répertoires, mais vous pouvez également supprimer des périphériques de caractères et de blocs. Je suggérerais de regarder le -type
prédicat sur la page de manuel pour find
.
Pour le faire strictement avec un caractère générique, vous avez besoin d'un support avancé du shell. Bash v4 a le globstar
option, qui vous permet de faire correspondre de manière récursive les sous-répertoires en utilisant **
. zsh
et ksh
prennent également en charge ce modèle. En utilisant cela, vous pouvez faire rm -rf **/.Apple*
. Ce n'est pas POSIX-standard, et pas très portable, donc j'éviterais de l'utiliser dans un script, mais pour une action shell interactive unique, ça va.