Unix magic, tüm .pyc dosyalarını bir dizin ağacından silmek istiyor musunuz?


11

Tüm .pyc dosyalarını bir dizin ağacından silmenin hızlı bir yolu var mı?

Yanıtlar:


28

GNU bulmanız varsa, muhtemelen

find <directory name> -name '*.pyc' -delete

Taşınabilir bir şeye ihtiyacınız varsa, daha iyi

find <directory name> -name '*.pyc' -exec rm {} \;

Hız büyük bir anlaşma olması durumunda ve GNU find var ve GNU sonra xargs

find <directory name> -name '*.pyc' -print0|xargs -0 -p <some number greater than 1> rm

Bununla birlikte, çoğunlukla G / Ç'de bekleyeceğiniz için, bu kadar hızlanmanız mümkün değildir.


mükemmel teşekkürler. Her zaman unuttuğum xargs
— interstar

2
Adlarda boşlukları olan dosyalara sahip olmam durumunda, daima -print0 ve "xargs -0" kullanma alışkanlığına girdim.
— Paul Tomblin

Tamamen haklısın, aslında bunu düşünmeliydin., Bunu yansıtacak şekilde düzenlendi.
— Cian

4
'-Print0 |' yerine '-delete' komutunu da doğrudan kullanabilirsiniz. xargs -0 rm '. Ancak bu seçeneğin tüm 'find' sürümünde mevcut olmadığı doğrudur.
— rolaf

6

find komutunu kullanarak:

find /path/to/start -name '*.pyc' -exec rm -f {} \;

Bu çok yavaş. Xargs kullanmak daha hızlıdır veya find sürümünüz destekliyorsa \;, sondaki " " işaretini " " olarak değiştirin +.
— sonraki duyuruya kadar duraklatıldı.

1
Biraz daha yavaş olabilir - her dosya için onları toplulamak yerine bir kez "rm" çalıştırır - ancak bunu yapmanın en taşınabilir yolu budur. OP ne tür bir unix kullandığını söylemedi ve Solaris hala -print0 özelliğine sahip değil.
— Kenster

1
+1, OP dedi unix linux değil, bu en iyi taşınabilir çözüm.
— theotherreceive

Bence bu çözüm, tonlarca dosyayı kaldırmaya izin veren tek şeydir, eğer xargs kullanarak yanlış değilsem bir komut satırına çok uzun hata bırakabilirsiniz. +1, yıllardan beri benim seçimim.
— drAlberT

Projenizi oluşturmak için bir makefile kullanıyorsanız, bunu "temiz" hedefine eklemek isteyebilirsiniz.
— Tom Newton

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.