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.