Si vous utilisez OS X, vous connaissez peut-être les fameux fichiers cachés ".DS_Store" qui sont produits à la suite de l'utilisation du Finder.
Le défi consiste à écrire du code qui traversera tout le système de fichiers et à supprimer tout fichier nommé ".DS_Store".
Golf à code classique - les gains de code les plus courts.
Clarifications:
Le code n'a pas besoin de supprimer les fichiers .DS_Store qui nécessitent un superutilisateur; supposons qu'aucun fichier de ce type n'existe.
Le code doit seulement supprimer les fichiers .DS_Store pertinents et rien d' autre.
code-golf
file-system
arshajii
la source
la source
.DS_Store
aussi ?Réponses:
zsh, 19
(Faites 16 si vous pouvez laisser de côté
-f
.)la source
Bash *,
4030Cela devrait le gérer (pas très golfé, pas.à.mention merveilleusement lent). Bash semble juste parce que nous n'avons pas à faire face à n'importe quel non-sens "système d'importation". Si vous souhaitez exiger l'exécution dans n'importe quel environnement, ajoutez 4 caractères pourbash
et 1 pour un saut de ligne.* n'importe quel shell, je suppose, ne peut tout simplement pas sortir de l'habitude en supposant que le shell bourne est à nouveau le seul.
la source
find
OS X? Avec GNUfind
est encore plus courte:find / -name .DS_Store -delete
.bash
4 ou plus récent avecglobstar
option shell activée ouzsh
:rm /**/.DS_Store
..DS_Store
répertoire où j'avais des choses importantes.Ruby:
3833 caractèresla source
Dir[...]
est un raccourci pourDir.glob(...)
, cela vous fera économiser 5 caractères.Kernel
. Merci, @padde.poisson, 16
(Assurez-vous que 19
-f
est nécessaire pour supprimer.DS_Store
dans les répertoires en lecture seule.)la source
Coquille, 25
Nécessite une
locate
base de données fonctionnelle .la source
Python 3 , 80 octets
Essayez-le en ligne!
Pas du tout compétable, mais juste pour le plaisir :)
la source
CMD, 17
Assez simple.
/s
est également requis pour la recherche dans les sous-répertoires."
est utilisé pour échapper au caractère/
qui serait autrement interprété comme un argument (invalide).la source
trouver, 38
La
find
solution précédente est tout à fait erronée: il s'agit de supprimer tout ce qui est nommé,.DS_Store
y compris le répertoire, les liens, le fichier spécial, etc.Mais:
c'est la solution minimale à utiliser
find
.AVERTISSEMENT : Je déconseille fortement d'utiliser vraiment cette solution sur une vraie boîte * nix: essayer de supprimer récursivement quelque chose
/
est une très mauvaise idée. Vous êtes prévenu.MODIFIER :
Si les différences entre les fichiers, les répertoires, les liens (physiques et symboliques), les canaux nommés, les sockets, les fichiers spéciaux, les systèmes de pseudo-fichiers ne vous sont pas claires, je suggère de rechercher sur Google certains de ces termes inconnus. Vous serez surpris, plus sage et moins sujet aux erreurs (catstrofiques).
EDIT2 : Encore plus pertinent: l'OP a écrit "Le code ne devrait supprimer que les fichiers .DS_Store pertinents et rien d'autre." : donc, si quelqu'un se soucie de lire les exigences ennuyeuses , toutes les solutions qui suppriment plus que ces fichiers sont drôles, intelligentes, etc. mais mal .
la source
find
solution précédente est correcte. La question dit «supprimez tout fichier nommé« .DS_Store »». Donc, aucune exigence particulière basée sur le type de fichier.