Bu sinir bozucu “.DS_Store” dosyalarını silin


13

OS X kullanıyorsanız, Finder kullanmanın sonucu olarak ortaya çıkan meşhur gizli ".DS_Store" dosyalarına aşina olabilirsiniz.

Buradaki zorluk tüm dosya sisteminden geçen kodu yazmak ve ".DS_Store" adlı herhangi bir dosyayı silmek.

Klasik kod golf - en kısa kod kazanır.


Açıklamalar:

  • Kod yok değil superuser gerektiren herhangi .DS_Store dosyaları silmek gerekir; böyle bir dosya olmadığını varsayalım.

  • Kod yalnızca ilgili .DS_Store dosyalarını silmeli ve başka hiçbir şey silmemelidir.


3
Kodun süper kullanıcı gerektiren .DS_Store dosyalarını silmesi gerekiyor mu (sudo'yu çağırmam gerekiyor mu)?
Kaya

1
@Kaya İyi soru: hayır bu tür dosyaları silmeye gerek yok.
arshajii

27
.DS_StoreAyrıca adlandırılmamış dosyaları silmek doğru mudur ?
Joey Adams

1
@JohannesKuhn En son düzenlemenin açıkça görülmesi gerekirdi, sanırım. Bütünlük uğruna ekledim. Ama yine de akıllıca cevabı takdir ediyorum!
arshajii

1
@Joey - Soruyu askeri alana aktarın - örneğin, hmm… ABD ordusu, rastgele ^^. Ve ".DS_Store" "adlı dosyayı" öldürecek kişi "ile değiştirin. Ve göreceksiniz ki “sadece” gereksinimi açık olmaktan çok uzaktır.
Nicolas Barbulesco

Yanıtlar:


14

zsh, 19

rm -f /**/.DS_Store

(Dışarıda kalmanız uygunsa 16 yapın -f.)


12

Bash *, 40 30

find / -name .DS_Store -delete

find / -name .DS_Store -exec rm -f {} \;

Bu başa çıkmalı (çok golf değil, değil. Harika yavaş yavaş). Bash doğru görünüyor çünkü herhangi bir "ithalat sistemi" saçmalıklarıyla uğraşmak zorunda değiliz. Herhangi bir ortamda yürütülmesini istiyorsanız, bashsatır besleme için 4 karakter ve 1 satır ekleyin .

* sanırım herhangi bir kabuk, sadece bourne kabuğunun tek olduğunu varsayarak alışkanlıktan kurtulamıyorum.


1
Bash bunun için en doğru araçtır.
Johannes Kuhn

1
findOS X ne tür ? GNU ile findbile kısadır: find / -name .DS_Store -delete.
manatwork

1
Tabi “Argüman listesinin çok uzun” hata ve gerektirir ya bash4 veya daha yeni globstarkabuk seçeneği açık veya zsh: rm /**/.DS_Store.
manatwork

1
Bash'a özgü bir şey yapmıyorsunuz, bu yüzden sh de olabilir.
Peter Taylor

10
.DS_StoreÖnemli şeylerin olduğu dizini kaldırdı .
Konrad Borowski

9

Yakut: 38 33 karakter

File.delete *Dir['/**/.DS_Store']

2
Dir[...]için bir kısayoldur Dir.glob(...), bu size 5 karakter kazandırır.
Patrick Oscity

3
Ahh! Daha kısa bir yol olduğunu biliyordum, ama araştırdım Kernel. Teşekkürler @padde.
manatwork

2

balık, 16

rm /**/.DS_Store

(Salt okunur dizinlerde -fsilinmesi gerekiyorsa 19 yapın .DS_Store.)


0

Kabuk, 25

locate .DS_Store|xargs rm

Çalışma locateveritabanı gerektirir .


3
Ayrıca boşluk karakteri olmayan yollar gerektirir.
manatwork


0

CMD, 17

del/s "/.DS_Store

Oldukça basit.

/salt dizinlerde de arama yapmak için gereklidir. aksi takdirde (geçersiz) bir argüman olarak yorumlanacak karakterden
"kaçmak için kullanılır /.


-1

bulmak, 38

Önceki findçözüm basit bir yanlıştır: .DS_Storedizin, bağlantılar, özel dosya vb.Dahil olmak üzere adlandırılan her şeyi silmek anlamına gelir .

Fakat:

find / -type f -name .DS_Store -delete

kullanarak minimal çözüm find.

DISCLAMER : Bu çözümü gerçek bir * nix kutusunda gerçekten kullanmamanızı şiddetle tavsiye ediyorum: bir şeyi tekrar tekrar silmeye çalışmak /çok kötü bir fikir. Uyarıldınız.

DÜZENLE :

Dosyalar, yönetmenler, bağlantılar (sabit ve sembolik), adlandırılmış borular, soketler, özel dosyalar, sözde dosya sistemleri arasındaki farklar sizin için net değilse, bu bilinmeyen terimlerin bazılarını google'a öneriyorum. Sürpriz, daha akıllı ve hatalara daha az eğilimli olacaksınız.

EDIT2 : Daha da alakalı: OP yazdı "Kod yalnızca ilgili .DS_Store dosyalarını silmeli ve başka hiçbir şey." : yani, birisi sıkıcı gereksinimleri okumak ister, bu dosyalardan daha fazlasını kaldırmak tüm çözümler komik, akıllı, vb tavşan. ama yanlış .


Önceki findçözüm doğrudur. Soru ““ .DS_Store ”adlı herhangi bir dosyayı sil” diyor. Yani dosya türüne göre özel bir gereklilik yoktur.
manatwork

@ manatwork: saçmalık: bir dosya bir dizinden farklı bir şeydir. Bükülmüş çizginiz boyunca, en iyi çözüm hala rm
-rf


3
Ohh ve başka bir şey: Kod golfünde amaç en kısa çözümü elde etmektir, bu yüzden gereksinimleri kendi lehinize izleyerek birkaç karakter kaydedebilirseniz, öyle olsun. Unix gibi her şeyi dosya olarak ele alarak 8 karakter kaydedebilirsiniz. Not: sürpriz neredeydi? Bazı insanların temel UNIX prensibini reddetmesi mi?
Johannes Kuhn

1
Şimdi daha iyi bir yanıt aldım , buradaki herkesin anlayabileceği bir şey.
DavAlPi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.