Dizinleri silmeden tüm dosyaları yinelemeli olarak kaldırma


10

Alt dizinlerdeki tüm dosyalar dahil olmak üzere bir dizindeki tüm dosyaları "temizlemek" istiyorum ama alt dizinleri yerinde bırakmak istiyorum. Anladığım kadarıyla rm -ralt dizinleri de siler.

Ben yok gizlenmiş (nokta) dosyaları silmek istiyorum.

Bu nasıl yapılabilir?


1
find -type f ! -name "[.]*" -deleteuygun değil?
Costas

Bilmiyorum. Sorduğum şeyi yapıyor mu?
Scott Wilton

Olmadan deneyin -delete- silmek için sadece dosya adlarını yazdırın.
Costas

Gizli dizinlerdeki dosyaları (gizli veya değil) silmek istiyor musunuz?
Stéphane Chazelas

Dizinlere sembolik bağlantılar ne olacak?
Stéphane Chazelas

Yanıtlar:


10

Bunun için kullanın find:

find . ! -name '.*' ! -type d -exec rm -- {} +

1
Tüm uygulamaların bulunmadığı-delete
wurtel

3
@RomeoNinov lütfen OP sorusunu okuyun:I do not want to delete hidden (dot) files.
jimmij

1
@Costas, hayır, kaçmayı gerektiren bir kabuk yok +(en azından Bourne, csh veya rc ailelerinde değil). Bazı eski sürümleri söyleyen bir efsane var cshkaçan gerekli {}ama o rastlamak hiç.
Stéphane Chazelas

1
@ScottWilton Gizli dizinler dahil ancak gizli dizinlerdeki gizli dosyalar dahil değildir. Gizli dizinlerdeki tüm dosyaları reddetmek istiyorsanız find . ! -name '.*' ! -type d ! -path '*/.*'işi yapmalısınız.
jimmij

1
@jimmy, daha çok bunlara inmeyi find . -name '.?*' -prune -o ! -type d -exec rm {} +önlemek gibi . Not --yolları ile başlar beri burada gerekli değildir (gerçi zarar vermez) ./.
Stéphane Chazelas

0

şuna benzer bir şey deneyin:

find <path> ! -name '.*' -type f -exec rm {} \;

Dosyaları hızlandırmak yerine birer birer kaldırmanın bir nedeni var .... -exec rm {} + mı?
Anthon

İşleri tek tek yapmayı tercih ederim. Kütle (ve paralel) operasyonların biraz garip (ve hoş olmayan) yan etkileri vardır (G / Ç alt sisteminde büyük yük oluştururken)
Romeo Ninov

1
-exec rm {} +paralel değildir, sadece rmbirkaç dosya adıyla çağırır . Daha az rmçağrı yapar, bu nedenle kaynak dostu olur. Biraz daha az güvenli olması durumunda, kaldırılacak dosyaların bir dizin bileşeninin bir pencere bağlantısına dönüştürülebileceği yarış penceresini büyütür. Ama sadece -deleteya da -execdir rm {} \;buna tamamen değinirdi.
Stéphane Chazelas

@ StéphaneChazelas, bunlardan olmayanlar (-delete veya -execdir) UNIX'te bulunmaktadır. Ve söz konusu linux'dan bahsetmeyi görmüyorum!
Romeo Ninov

@RomeoNinov, evet başka bir yorumda sadece -execstandart olduğunu söyledim . -deleteve -execdirBSD'lerden geliyor, GNU onları yaklaşık 10 yıl sonra ekledi. Her durumda, bunun Linux ile bir ilgisi yok, ki bu sadece bir çekirdek.
Stéphane Chazelas
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.