Tüm .svn klasörlerini yinelemeli olarak silmek için Terminal nasıl kullanılır?


56

Terminal'e hangi komutu yazabilirim, böylece .svnbir klasör içindeki tüm klasörleri silebilirim (ve tüm alt dizinlerden) ama başka bir şeyi silemezim?


Belki sadece svn export path/to/repo path/to/export/toyerine ...
Jonny,

Bunun bir notu, svn exportsvn'nin bir parçası olmayan dosyalar arasında kopyalanmamasıdır. Örneğin, bunu, Pods klasörünü işlemediğimiz Cocoa Pod'ları kullanan bir iOS uygulaması için yapmak istedim. Bu daha sonra çıkıştan atlandı. İstediğim şey için Rich'in cevabına benzer bir şey kullandım.
jackofallcode

Yanıtlar:


120
cd to/dir/where/you/want/to/start
find . -type d -name '.svn' -print -exec rm -rf {} \;
  • Özyinelemeyi yapan bul'u kullanın
  • geçerli dizinde.
  • filetype dizinidir
  • dosya adı .svn
  • Bu noktaya uygun olanı yazdırın (.svn dirs)
  • komutu yürütün rm -rf (thing found from find). {} bulunan varlık için bir yer tutucudur
  • ; exec için komutun yapıldığını söyler. Çünkü kabuğun da ne olduğu hakkında bir fikri vardır; Bu, \ ile kaçman gerek, böylece kabuk onunla özel bir şey yapmaz ve sadece bulmak için geçer

2
Güzel çözüm. İken findsahiptir -deleteo boş olmayan dizinleri silmez. Bu yaklaşım, örneğin tüm dosya yolunun bölümleriyle eşleşmeye başlamaktan daha temizdir.
Daniel Beck

13
Ne istediğini -exec rm -rf {} \;sadece bulmak için ilk kez olmadan çalıştırmanızı tavsiye ederim . Yanlış bir şeyi yanlışlıkla silmeme neden olan bir sorun yaşamadım, çünkü her zaman önce kontrol ediyorum.
Rob,

2
@Rob iyi nokta, genellikle -exec echo rm -rf {} \; sonra yankıyı kaldırın.
Rich Homolka,

Çok fazla değilse başka bir seçenek de her dosyanın silinmesini onaylamak olacaktır-exec rm -ri {} \;
doovers

4
-exec rm -rf {} +Muhtemelen birçok kez hızlıdır, çünkü çok fazla rmörnek başlatmak zorunda değildir . Bunun yerine, bir aramada maksimum argüman miktarını (bu durumda kaldırılacak dizinler) toplar. Bu mümkündür, çünkü rmçoklu argümanlar kabul eder.
Daniel B,
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.