Je cherche depuis un certain temps, mais je n'arrive pas à trouver une solution succincte. J'ai un Mac avec un dossier que je veux nettoyer de tous les fichiers/répertoires cachés - tout ce qui est caché. C'était un espace de travail Eclipse avec beaucoup de choses .metadata/.svn, et je suis d'accord pour que tout soit supprimé. Comment puis-je faire cela (soit avec un script Shell, Applescript, etc.). Merci beaucoup d'avance!
find . -name ".*" -print
Je ne connais pas le MAC OS, mais c'est ainsi que vous les trouvez tous dans la plupart des environnements * nix.
find . -name ".*" -exec rm -rf {} \;
pour se débarrasser d'eux ... faites la première recherche et assurez-vous que cette liste est ce que vous voulez avant de les supprimer tous.
La première "."
signifie à partir de votre répertoire actuel. Notez également le deuxième ".*"
peut être changé en ".svn*"
ou tout autre nom plus spécifique; la syntaxe ci-dessus ne trouve que tous les fichiers cachés, mais vous pouvez être plus sélectif. Je l'utilise tout le temps pour supprimer tous les répertoires .svn dans l'ancien code.
Vous devez être très prudent et tester toutes les commandes que vous utilisez car vous ne voulez probablement pas supprimer le répertoire en cours (.
), le répertoire parent (..
) ou tous les fichiers.
Cela ne doit inclure que les fichiers et répertoires commençant par un point et excluant .
et ..
.
find . -mindepth 1 -name '.*' -delete
rm -rf `find . -type f -regex '.*/\.+.+'`
Si vous souhaitez supprimer des répertoires, modifiez -type f
pour type -d
.
Si vous souhaitez supprimer des fichiers et des répertoires, supprimez type -f
find /path -iname ".*" -type f -delete ;
Rubis (1.9+)
Ruby -rfileutils -e 'Dir["**/.*"].each{|x| FileUtils.rm(x) if File.file?(x)}'
J'utilise cette commande pour supprimer des répertoires vides. Il commence en bas et se dirige vers le haut. Donc, cela n'échouera pas si vous référencez le chemin actuel.
find . -depth -type d -empty -exec rmdir {} \;
J'ai trouvé que cela fonctionnait assez bien (dans Bash sur Linux au moins):
find . -wholename '*/.*' -type f | sed -n '/\/\.[^\/]\+$/p' | xargs rm
Vous pouvez modifier l'expression régulière dans l'appel sed
à votre convenance.
Attention cependant: dans mon cas, j'ai beaucoup de fichiers cachés nommés .gitignore
ou .gitkeep
qui doit être préservé. Assurez-vous de vérifier la liste pour voir s'il y a quelque chose que vous souhaitez conserver.
J'ai trouvé cette variante très utile, elle supprime des fichiers comme ._ANYTHING
(fichiers souvent supprimés ou tmp):
find . -wholename '*/.*' -type f | sed -n '/\/\._[^\/]\+$/p' | xargs rm