Se você usa o OS X, pode estar familiarizado com os famosos arquivos ".DS_Store" ocultos produzidos como resultado do uso do Finder.
O desafio é escrever um código que percorra todo o sistema de arquivos e exclua qualquer arquivo chamado ".DS_Store".
Código clássico de golfe - o código mais curto vence.
Esclarecimentos:
O código não precisa excluir nenhum arquivo .DS_Store que exija superusuário; suponha que esses arquivos não existam.
O código deve excluir apenas os arquivos .DS_Store relevantes e nada mais.
code-golf
file-system
arshajii
fonte
fonte
.DS_Store
também ?Respostas:
zsh, 19
(Faça 16 se estiver de acordo em deixar de fora
-f
.)fonte
Festança *,
4030Isso deve ser resolvido (não muito golfado, não. Para uma menção maravilhosamente lenta). O Bash parece certo, porque não precisamos lidar com nenhuma bobagem do "sistema de importação". Se você deseja exigir execução em qualquer ambiente, adicione 4 caracteres parabash
e 1 para um feed de linha.* qualquer concha, eu acho, simplesmente não consigo abandonar o hábito assumindo que a bourne novamente é a única.
fonte
find
OS X? Com GNUfind
é ainda menor:find / -name .DS_Store -delete
.bash
4 ou mais recente comglobstar
opção de shell ligado, ouzsh
:rm /**/.DS_Store
..DS_Store
diretório onde eu tinha coisas importantes.Ruby:
3833 caracteresfonte
Dir[...]
é um atalho paraDir.glob(...)
, você economizará 5 caracteres.Kernel
. Obrigado, @padde.peixe, 16
(Faça 19 se
-f
for necessário excluir.DS_Store
nos diretórios somente leitura.)fonte
Shell, 25
Requer
locate
banco de dados de trabalho .fonte
Python 3 , 80 bytes
Experimente online!
De modo algum competitivo, mas apenas por uma questão :)
fonte
CMD, 17
Bem direto.
/s
também é necessário para pesquisar em subdiretórios."
é usado para escapar do/
caractere que, de outra forma, seria interpretado como um argumento (inválido).fonte
encontrar, 38
A
find
solução previus está completamente errada: significa excluir tudo o que é chamado,.DS_Store
incluindo diretório, links, arquivo especial etc.Mas:
é a solução mínima usando
find
.DISCLAMER : Aconselho vivamente a não usar realmente esta solução em uma caixa real * nix: tentar excluir algo de forma recursiva
/
é uma péssima idéia. Você é avisado.EDIT :
Se as diferenças entre arquivos, diretórios, links (rígidos e simbólicos), pipes nomeados, soquetes, arquivos especiais e sistemas de pseudo-arquivos não estiverem claras para você, sugiro que você procure no Google alguns desses termos desconhecidos. Você ficará surpreso, mais sábio e menos propenso a erros (catastróficos).
EDIT2 : Ainda mais relevante: o OP escreveu "O código deve excluir apenas os arquivos .DS_Store relevantes e nada mais". : portanto, se alguém quiser ler os requisitos chatos , todas as soluções que removem mais do que esses arquivos são engraçadas, inteligentes, etc. mas errado .
fonte
find
solução anterior está correta. A pergunta diz "excluir qualquer arquivo chamado" .DS_Store "". Portanto, nenhum requisito especial com base no tipo de arquivo.