"Bağımsız değişken listesi çok uzun" olduğunda 3 günden eski tüm dosyalar nasıl silinir?


89

İçinde 82000 dosya ve dizin bulunan bir günlük dosyası dizinim var (yaklaşık yarısı buçuk).

3 günden eski tüm dosya ve dizinleri silmem gerekiyor.

İçinde 37000 dosya bulunan bir dizinde, bunu şu şekilde yapabildim:

find * -mtime +3 -exec rm {} \;

Ancak 82000 dosya / dizinle şu hatayı alıyorum:

/ usr / bin / find: Bağımsız değişken listesi çok uzun

3 günden daha eski olan tüm dosyaları / dizinleri silebilmek için bu hatayı nasıl aşabilirim?


1
Denedin find -mtime +3 -exec rm {} +mi
Gilles Quenot

1
find * -mtime +3 |xargs rmKoşmanın bu sorunu çözeceğine inanıyorum .
Mats Petersson

10
Sanırım tek sorun şu find *. find .daha iyi. Kabuk, *geniş bir dosya ve dizin listesine genişler .
artless noise

@artlessnoise yerinde.
sjas

Yanıtlar:


120

Mevcut dizindeki tüm dosyaları ve dizinleri silmek için :

find . -mtime +3 | xargs rm -Rf

Veya alternatif olarak, OP'nin orijinal komutuyla daha uyumlu:

find . -mtime +3 -exec rm -Rf -- {} \;

26
-1 Sorun, "bul *" daki yıldızdır, "bul" u kullanarak çözdünüz. yerine. Xargs burada yanıltıcıdır.
Aleksandr Levchuk

7
@AleksandrLevchuk OP sorununu çözüyor ve bu nedenle olumsuz oyu hak etmiyor
hd1

11
Soru: "bul * -mtime +3 -exec rm {} \;" Bağımsız Değişken listesi çok uzun veriyor. Cevap: "bul. -Mtime +3 -exec rm {} \;"
Aleksandr Levchuk

2
--find . -mtime +3 -exec rm -- {} \;
Rm'den

8
Kimse ne için --olduğunu söylemedi .
Acumenus

59

Ayrıca şunları da kullanabilir:

find . -mindepth 1 -mtime +3 -delete

Hedef dizini silmemek için


4
En iyi yanıt, rm'yi aramaktan çok daha temiz (ve muhtemelen daha güvenli). Alt dizinler için de çalışır.
basic6

16

Özgün soru için başka bir çözüm, özellikle. bir klasördeki eski dosyalardan yalnızca BAZILARINI kaldırmak istiyorsanız kullanışlıdır, şu şekilde olacaktır:

find . -name "*.sess" -mtime +100 

ve benzeri .. Alıntılar kabuk joker karakterlerini engeller, böylece milyonlarca dosyayı "bulmanızı" sağlar :)

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.