Linux'ta belirli bir dizeyle başlayan tüm dosyalar nasıl kaldırılır


36

NAMEBir dizin ağacında adı ile başlayan tüm dosyaları bulmalı ve tüm bu dosyaları bir kabuk komutu ile kaldırmam gerekiyor.

Yanıtlar:


1

adı olan tüm dosyaları silmek için --- kullanabilirsiniz

find -name . 'name*' -exec rm {} \;

1
Ayrıca -f 'rm' argümanı olarak ekleyebilirsiniz, böylece "X dosyasını kaldırmak istediğinizden emin misiniz?" Sorulmaz.
UtahJarhead

Hangi sürümün grepbir -execanahtarı var?
Ben Graham,

Bu yorum neden aşağı oy kullanıyor?
Ultrasonic54321

64

Geçerli dizindeki ve dosya adının "foo" ile başladığı alt dizinlerindeki tüm dosyaları silin:

$ find . -type f -name foo\* -exec rm {} \;

Not: Dikkatli kullanın - ilk önce yedekleyin - ayrıca önce kuru bir işlem yapın, örneğin

$ find . -type f -name foo\*

Sadece silinecek dosyaların isimlerini söyleyeceğim.


5
2 Milyondan fazla dosyayı silmek zorunda kaldım ve başım derde girdi, find . -type f -name foo\* -deletenumarayı yaptım
Linas

25

Bu şekilde denedim, benim için çalışıyor, emir altında çalış.

rm -rf Example*

Burada "Örnek", tüm dosyalar için ortak olan metindir.


4
Bunun neden en yüksek
oyu aldığından

@DanTheMan Çünkü diğer cevaplardan ~ 4 yıl daha yeni. Bu kesinlikle en basit cevap olsa da.
joshuakcockrell

10

Kullanabilirsiniz find:

find . -name "name*" -exec rm {} \;

Ayrıca '.' Belirtmek yerine mutlak bir yol belirleyebilirsiniz.
UtahJarhead

3

İle globstarseçeneğiyle (ile etkinleştirmek shopt -s globstar):

rm -f **/NAME*

**/genişlediğinde için ./, */, */*/, */*/*/bir varsa vb dizin ile başlayan isim NAME, komut şikayet edecek rmdizinleri kaldıramaz, ama hepsi bu.

Glob birçok dosyayla eşleşiyorsa bunun komut satırı uzunluğu sınırlamalarına girebileceğini unutmayın.

Alternatif olarak, rmmümkün olduğu kadar az başlatma ile , ancak komut satırı uzunluğu sınırlamalarına tabi değil:

find . -type f -name 'NAME*' -exec rm -f {} +

(İfadeyi kapatmak +yerine yerine dikkat edin .)\;-exec


2

find . -name 'foo'* -type f -delete En basit cevap gibi görünüyor.

Sen olmadan bu çalıştırabilirsiniz -deletesilinecektir hangi dosyaları görmek için önce bayrak.


-2

Dosya / klasörün "Inode" numarasını arayın ve sonra inode numarasını kullanarak silin. Aşağıda bir örnek:

ls -il
3407873 drwxr-xr-x. 2 root   root      4096 Mar 30 07:49 p

find . -inum 3407873 -exec rm -rf {} \;

Bu iyi bir cevap - farklı bir soruya. Bu bir cevap değil bu soruya.
Scott
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.