La solution évidente produit un code de sortie de 1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Une solution possible passera le "." et les répertoires ".." mais ne supprimeront que les fichiers dont les noms dépassent 3 caractères:
bash$ rm -f .??*
Réponses:
Devrait attraper tous les cas. Le. ?? * ne correspondra qu'à 3+ noms de fichiers de caractères (comme expliqué dans la réponse précédente), le. [^.] Interceptera deux entrées de caractères (autres que ..).
la source
zsh
. Aucune suggestion?zsh
par défaut, une correspondance générique vide est traitée comme une erreur; alors qu'avecbash
elle est simplement passée inchangée. Pour fairezsh
se comporter de la même manière, vous pouvez utiliser la commandeunsetopt nomatch
Cela correspond à tous les fichiers du répertoire courant qui commencent par a
.
et les supprime récursivement. Les fichiers cachés dans des répertoires non cachés ne sont pas touchés.Au cas où vous voudriez vraiment tout effacer d'un répertoire,
find -delete
cela suffirait.la source
.
la meilleure façon est probablement:
changez rm en ls -l si vous voulez juste voir ce qui serait supprimé, pour commenter la sortie u peut vouloir ajouter l' option -v à rm
ps. n'oubliez pas de terminer '\;'
la source
la source