"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.