Derleme numaralarıyla biten linux dizinlerini kaldırmak için


0

Derleme dizinlerinin kopyalanacağı bir yolum var, bu yüzden sadece en son 3 dizini tutmalı ve diğerlerini silip tarihe göre değil en son derleme numarasına ihtiyacım var.

Eğer / tmp yolunda aşağıdaki dizinler varsa

1.1.0000-021, 1.1.0000-005, 1.1.0000-018, 1.1.0000-004

En eski dizin olarak / tmp yolunda 1.1.0000-004 dizinini silmeliyim.

Rm -rf / base / path -type d -ctime 4 ile deniyordum, fakat bu en son dosyaya dayanıyor, silmek için en eski sayıyı alma konusunda emin değilim.


Bunu bir komut dosyasıyla yapıyorsun. Ne denedin ve nerede başarısız oluyor? Bu bir "benim için kodumu yaz" sitesi değil.
Jan Doggen

“... ve nerede başarısız olur”? Ve sorunuzu düzenleyin . İlgili tüm bilgiler orada olmalı, yorumlarda cevap vermeyin.
Jan Doggen

Yanıtlar:


0

Aşağıdaki zinciri kullanabilirsiniz:

ls : liste dosyaları / dizinler

sıralama -nr : sıralama dosyaları / dizinleri sayısal, ters

kuyruk : listeden çıkıp sadece son $ n (burada: 4) giriş (yalnızca 4 kalırsa liste boş kalır)

Örneğin:

ls | sort -nr | tail +5 

Ardından dosyaları alın ve silin; (yani, xargs + rm ile)


1
Teşekkür Philip, bu görünüyor görünüyor ls | sort -nr | tail -n +4 | xargs rm -rf
guest

Yardımcı olduğuma sevindim!
derphilipp
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.