Bir dizindeki son değiştirilen 5 dosyayı nasıl listeleyebilirim (ls)?


138

ls -tTüm dosyaları değiştirilmiş zamana göre listeleyeceğini biliyorum . Ancak bu sonuçları yalnızca son n dosyayla nasıl sınırlandırabilirim ?


10
Sırayı tersine ls -lrtçevirmek birine yardımcı olabilir.
PJ Brunet

@PJBrunet seviyorum. İhtiyacım olan her şeye sahip tharlolma eğiliminde olduğu için hep birlikte olma alışkanlığını oluşturdum .
Adam Grant

Yanıtlar:


246

Baş veya kuyruk kullanmayı deneyin. En son değiştirilen 5 dosyayı istiyorsanız:

ls -1t | head -5

-1 (bu birdir) satır başına bir dosya ve başın ilk 5 girişi almasını söyler.

Son 5 denemek istiyorsanız

ls -1t | tail -5

2
Yanılmıyorsam, kabuk lsbirden çok sütunda çıktıyı temsil eder , ancak çıktısı lsbir seferde 1 dosya / dir komutuyla aşağıdaki komuta yönlendirilir
Alex

durum böyle görünüyor. Güzel basitleştirme.
Paul Rubel

3
Bu üstteki Toplamı görmezden gelir:ls -1t | head -n 6 | tail -n 5
Ryan

1
Bir toplam göremiyorum, ama kesinlikle işe yarayacak bir tane varsa.
Paul Rubel

18

Kabul edilen cevap sadece dosya adlarını listeler, ancak ilk 5 dosyayı almak için de kullanabilirsiniz:

ls -lht | head -6

nerede:

-l liste biçiminde çıktılar

-h çıktıyı okunabilir yapar (yani dosya boyutları kb, mb, vb. olarak görünür)

-t en son değiştirilen dosyayı önce yerleştirerek çıktıyı sıralar

head -65 dosya gösterecektir çünkü lsçıktının ilk satırındaki blok boyutunu yazdırır.

Bunun biraz daha zarif ve muhtemelen daha kullanışlı bir yaklaşım olduğunu düşünüyorum.

Örnek çıktı:

total 26960312 -rw-r--r--@ 1 user staff 1.2K 11 Jan 11:22 phone2.7.py -rw-r--r--@ 1 user staff 2.7M 10 Jan 15:26 03-cookies-1.pdf -rw-r--r--@ 1 user staff 9.2M 9 Jan 16:21 Wk1_sem.pdf -rw-r--r--@ 1 user staff 502K 8 Jan 10:20 lab-01.pdf -rw-rw-rw-@ 1 user staff 2.0M 5 Jan 22:06 0410-1.wmv


12

tailKomutu kullan :

ls -t | tail -n 5

Bu en yaşlı 5'i verir. En yeni 5'i almak için sort ( ls -tr) işlevini tersine çevirmeniz veya kullanmak headyerine kullanmanız tailgerekir.
Merkez Bankası

2

Varsayılan olarak ls -tçıktıyı en yeniden en eskiye doğru sıralar, bu nedenle kullanılacak komutların kombinasyonu çıktınızın hangi yönde sipariş edilmesini istediğinize bağlıdır.

En yeniden en eskiye doğru sıralanan en yeni 5 dosya headiçin, ilk 5 çıktı satırını almak için kullanın :

ls -t | head -n 5

En eskiden en yeniye doğru sıralanan en yeni 5 dosya için, sıralama düzenini -rtersine çevirmek için anahtarı lskullanın tailve son 5 satırdaki çıktıyı almak için kullanın :

ls -tr | tail -n 5

1

ls -tdosyaları oluşturma süresine göre en son değiştirilme zamanı ile listeler. ls -ltcDosyaları sondan ilke (yukarıdan aşağıya) son değiştirilme süresine göre listelemek istiyorsanız kullanın . Böylece son n listelemek için:ls -ltc | head ${n}


1
Hangi platforma / sürüme başvuruyorsunuz? Bir bağlantı sağlayabilir misiniz? Linux man sayfasına baktığınız şeyin tersini verir: -t sort by modification time, newest first
Joma
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.