Bir kalıpla eşleşen tüm dosyaları nasıl kaldırırım?


76

Mercurial'a döndüğümde, birkaç .origdosya bırakıyor . Hepsini kaldırmak için bir komut çalıştırabilmek istiyorum.

Çalıştırmak için bazı kaynaklar buldum:

rm **/*.orig

Ama bu bana mesajı veriyor:

rm: `* / .orig 'dosyasını kaldıramıyor : Böyle bir dosya veya dizin yok

Ben de denedim:

  • rm -rv *.orig

  • rm -R *\.orig


Yanıtlar:


148

findKomutu kullanın (dikkat!)

find . -name '*.orig' #-delete

Delete komutunu yorumladım, ancak eşleşmesinden memnun kaldığınızda #, satırın içinden kaldırmanız yeterlidir ve tüm bu dosyaları silmesi gerekir.


Bu özyinelemeli çalışır mı?
Frank Barcenas

2
@ FrankBarcenas Evet - bulmak her şeyi tekrarlı olarak yapar. Bunun nasıl çalıştığını sınırlamak istiyorsanız, -maxdepthya da -mindepthargümanları ile oynayabilirsiniz .
Oli

6
Kesinlikle bırakmak -deleteen sonunda bayrakların. find . -delete -name '*.orig'Filtreyi yok sayar ve dizininizin her yerini kapar.
Michael,

1
@Michael, evet. Ben zaten sorunu git clean -fdx
çözdüm

1
@kamal Muhtemelen hala bulmak ama onun -regexveya tahminleri ile kullanırım -iregex. Dosya adlarını ayrıştırma (etraflarında dolaşırken) bazen güvenli bir şekilde yapmak zor olabilir.
Oli

6

"find", tüm veya geçerli dizinleri ve rm dosyalarını taramak için çok gelişmiş tekniklere sahiptir.

find ./ -name ".orig" -exec rm -rf {} \;

3
Kullanmanın yararı nedir -delete?
muru

@muru -sf kaldırırsanız her dosya için bir bilgi istemi alırsınız herhalde.
Peter,

@Peter mutlaka gerekmez. O zaman bile öyle mi? Cevap kullanır -rfve findvardır -ok.
muru

@muru o benziyor -delete klasörleri
kaldırmıyor

@AndriiKaraivanskyi silme işlemi başarısız olmadıkça yapar.
muru

1

.Nfs000000000 ile başlayan tüm dosyaları kaldırdım.

rm .nfs000000000*
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.