Jeśli używasz OS X, możesz znać niesławne ukryte pliki „.DS_Store”, które powstają w wyniku użycia Findera.
Wyzwaniem jest napisanie kodu, który przejdzie przez cały system plików i usunięcie dowolnego pliku o nazwie „.DS_Store”.
Klasyczny golf - wygrywa najkrótszy kod.
Wyjaśnienia:
Kod nie musi usuwać żadnych plików .DS_Store, które wymagają administratora; zakładamy, że takie pliki nie istnieją.
Kod powinien usuwać tylko odpowiednie pliki .DS_Store i nic więcej.
code-golf
file-system
arshajii
źródło
źródło
.DS_Store
również ?Odpowiedzi:
zsh, 19
(Zrób 16, jeśli można pominąć
-f
.)źródło
Bash *,
4030To powinno sobie z tym poradzić (niezbyt golfa, nie z tego powodu cudownie wolno). Bash wydaje się słuszny, ponieważ nie mamy do czynienia z bzdurami dotyczącymi „systemu importu”. Jeśli chcesz wymagać wykonania w dowolnym środowisku, dodaj 4 znaki dlabash
i 1 dla nowego wiersza.* jakikolwiek pocisk, jak sądzę, po prostu nie może wyrwać się z przyzwyczajenia, zakładając, że łupina Bourne'a jest jedyna.
źródło
find
ma OS X? GNUfind
jest jeszcze krótszy:find / -name .DS_Store -delete
.bash
4 lub nowsza zglobstar
opcją powłoki włączone lubzsh
:rm /**/.DS_Store
..DS_Store
katalog, w którym miałem ważne rzeczy.Rubin:
3833 znakówźródło
Dir[...]
jest skrótem doDir.glob(...)
, pozwoli ci to zaoszczędzić 5 znaków.Kernel
. Dziękuję, @padde.ryba, 16
(Ustaw 19, jeśli
-f
jest wymagane do usunięcia.DS_Store
w katalogach tylko do odczytu).źródło
Shell, 25
Wymaga działającej
locate
bazy danych.źródło
Python 3 , 80 bajtów
Wypróbuj online!
W żadnym wypadku nie jest konkurencyjny, ale tylko ze względu na to :)
źródło
CMD, 17
Całkiem proste.
/s
jest również wymagane do wyszukiwania w podkatalogach."
służy do zmiany/
znaku, który w innym przypadku byłby interpretowany jako (nieprawidłowy) argument.źródło
znaleźć, 38
Poprzednie
find
rozwiązanie jest po prostu złe: oznacza usunięcie wszystkiego o nazwie, w.DS_Store
tym katalogu, linków, pliku specjalnego itp.Ale:
jest to minimalne rozwiązanie
find
.ODKRYWANIE : Zdecydowanie odradzam używanie tego rozwiązania na prawdziwym * pudełku nix: próba usunięcia czegoś rekurencyjnie
/
to bardzo zły pomysł. Jesteś ostrzeżony.EDYCJA :
Jeśli różnice między plikami, katalogami, linkami (twardymi i symbolicznymi), nazwanymi potokami, gniazdami, plikami specjalnymi, pseudoplikami nie są dla ciebie jasne, sugeruję przejrzeć niektóre z tych nieznanych terminów w Google. Będziesz zaskoczony, mądrzejszy i mniej podatny na (katstroficzne) błędy.
EDIT2 : Jeszcze bardziej odpowiedni: OP napisał: „Kod powinien usuwać tylko odpowiednie pliki .DS_Store i nic więcej.” : jeśli więc ktoś chce przeczytać nudne wymagania, wszystkie rozwiązania, które usuwają więcej niż te pliki, są zabawne, inteligentne itp. ale źle .
źródło
find
rozwiązanie jest poprawne. Pytanie brzmi „usuń dowolny plik o nazwie„ .DS_Store ””. Więc nie ma specjalnych wymagań w zależności od typu pliku.