Wenn Sie OS X verwenden, sind Sie möglicherweise mit den berüchtigten versteckten ".DS_Store" -Dateien vertraut, die aufgrund der Verwendung von Finder erstellt werden.
Die Herausforderung besteht darin, Code zu schreiben, der das gesamte Dateisystem durchläuft und alle Dateien mit dem Namen ".DS_Store" löscht.
Klassisches Codegolf - der kürzeste Code gewinnt.
Erläuterungen:
Der Code ist nicht brauchen keine .DS_Store Dateien zu löschen , die Super - User benötigen; Es wird davon ausgegangen, dass keine solchen Dateien vorhanden sind.
Der Code sollte nur die relevanten .DS_Store-Dateien löschen und sonst nichts.
code-golf
file-system
arshajii
quelle
quelle
.DS_Store
auch zu löschen ?Antworten:
zsh, 19
(Machen Sie das 16, wenn es in Ordnung ist, wegzulassen
-f
.)quelle
Bash *,
4030Dies sollte damit umgehen (nicht sehr golfen, nicht besonders langsam). Bash scheint richtig zu sein, weil wir uns mit keinem "Importsystem" -Nonsens befassen müssen. Wenn Sie die Ausführung in einer beliebigen Umgebung erfordern möchten, fügen Sie 4 Zeichen fürbash
und 1 für einen Zeilenvorschub hinzu.* Jede Shell, die ich denke, kommt einfach nicht aus der Gewohnheit heraus, vorausgesetzt, die bourne again-Shell ist die einzige.
quelle
find
ein Betriebssystem hat OS X? Mit GNUfind
ist noch kürzer:find / -name .DS_Store -delete
.bash
4 oder neuer mitglobstar
Shell - Option aktiviert ist , oderzsh
:rm /**/.DS_Store
..DS_Store
Verzeichnis, in dem ich wichtige Sachen hatte.Ruby:
3833 Zeichenquelle
Dir[...]
ist eine Abkürzung fürDir.glob(...)
, dies erspart Ihnen 5 Zeichen.Kernel
. Vielen Dank, @padde.Fisch, 16
(Stellen Sie diese 19 ein, wenn
-f
das Löschen.DS_Store
in schreibgeschützten Verzeichnissen erforderlich ist .)quelle
Muschel, 25
Benötigt eine funktionierende
locate
Datenbank.quelle
Python 3 , 80 Bytes
Probieren Sie es online!
Auf keinen Fall wettbewerbsfähig, sondern nur der Sache zuliebe :)
quelle
CMD, 17
Ziemlich einfach.
/s
wird auch für die Suche in Unterverzeichnissen benötigt."
wird verwendet, um dem/
Zeichen zu entgehen, das andernfalls als (ungültiges) Argument interpretiert würde.quelle
finde, 38
Die vorherige
find
Lösung ist einfach falsch: Es ist gemeint, alles zu löschen,.DS_Store
einschließlich Verzeichnis, Links, Spezialdatei usw.Aber:
es ist die minimale Lösung mit
find
.HAFTUNGSAUSSCHLUSS : Ich rate dringend davon ab, diese Lösung wirklich auf einer echten * nix-Box zu verwenden: Es
/
ist eine sehr schlechte Idee, etwas rekursiv von zu löschen . Sie werden gewarnt.EDIT :
Wenn Ihnen die Unterschiede zwischen Dateien, Verzeichnissen, Verknüpfungen (fest und symbolisch), Named Pipes, Sockets, Spezialdateien und Pseudodateisystemen nicht klar sind, empfehle ich, einige dieser unbekannten Begriffe zu googeln. Sie werden überrascht, weiser und weniger anfällig für (katstrofische) Fehler sein.
EDIT2 : Noch relevanter: Das OP schrieb: "Der Code sollte nur die relevanten .DS_Store-Dateien löschen und sonst nichts." : Also, wenn jemand die langweiligen Anforderungen lesen möchte , sind alle Lösungen, die mehr als diese Dateien entfernen, witzig, klug, ect. aber falsch .
quelle
find
Lösung ist korrekt. Die Frage lautet "Alle Dateien mit dem Namen" .DS_Store "löschen". Also keine besonderen Anforderungen basierend auf dem Dateityp.