Dosyaları son düzenlenme tarihine göre listeleyin


104

Bir rehberim var: /home/user/

Bu dizindeki her dosyayı (alt dizinlerdekiler dahil) nasıl listeleyebilir ve en son değiştirildikleri tarihe göre sıralayabilirim?

Yanıtlar:


172

Kullanabilirsiniz:

ls -Rt

nerede -Raraçlar özyinelemeli ve (alt dizinleri dahil) -t"sort son değişiklik tarihine göre" demektir.


Değiştirilme tarihine göre sıralanmış dosyaların listesini görmek için şunu kullanın:

ls -l -Rt

Bunu başarmak için bir takma ad da oluşturulabilir:

alias lt='ls -lht'
lt

-hDaha okunabilir bir çıktı nerede verir.


16
Teşekkürler, bu harika. Oraya da -l ekledim, böylece tarihleri ​​gerçekten görebiliyorum, böylece bunu daha sonra arayanlar için
Marty,

4
Bunu istemde yapıyorsanız ve en son değiştirilen dosyaları görmek istiyorsanız, düşünün ls -lrt[RhA]. -r... Listenin altındaki son düzenlenen şeyler bırakarak sıralama düzeni, tersine çevirir
dmckee --- eski moderatör kedi yavrusu

Bu, a'ya eklendiğinde -ila, ihtiyacınız olan hemen hemen tüm bilgileri verir. $ ls -ilaRt
Falkenfighter

ll -RtDosyaları en son değiştirilen tarihe göre görmem gerektiğinden, kullanmak benim için mükemmel bir çözüm olduğu için bu yanıtı genişlettim . Bu başkalarına yardımcı olabilir.
Muş

@MusTheDataGuy llmevcut değil ve bir komut değil. Çoğunlukla bash kabuğundaki bir takma addır, ancak çoğu / bir kısmı /? linux dağıtımları. Bazıları bunu alias ll='ls -l'/etc/bash.bashrc veya /etc/.bashrc içinde tanımlar. Bu nedenle çalışmayabilir ve OPs sisteminde mevcut olmayabilir. Kullanım ls -l -Rt, en azından olarak lsPOSIX'in tanımlanan standart bir komuttur. Veya kastettiğinizi belirtin alias ll='ls -l'; ll -Rt.
KamilCuk

73

Tüm dosyaların değişiklik tarihine göre birlikte sıralandığı , içinde bulundukları dizini gösteren, ancak dizine göre gruplandırılmayan bir ana liste istiyorsanız, şunu kullanabilirsiniz:

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

Sonuç çok benziyor ls -l:

-rw-r - r-- 1 kök kök 3892 08/11/2009 11:03:36 /usr/share/man/man1/xmllint.1.gz
-rw-r - r-- 1 kök kök 22946 08/13/2009 11:59:20 /usr/share/man/man1/curl.1.gz
-rw-r - r-- 1 kök kök 728 08/17/2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz
-rw-r - r-- 1 kök kök 873 08/18/2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz
-rw-r - r-- 1 kök kök 2552 08/19/2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz
-rw-r - r-- 1 kök kök 9546 08/19/2009 02:02:00 /usr/share/man/man1/pidgin.1.gz
-rw-r - r-- 1 kök kök 2201 08/19/2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz
-rw-r - r-- 1 kök kök 926 08/19/2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz
-rw-r - r-- 1 kök kök 18052 08/19/2009 04:11:47 /usr/share/man/man1/mono.1.gz
-rw-r - r-- 1 kök kök 1845 08/19/2009 04:11:47 /usr/share/man/man5/mono-config.5.gz

Mac OS X

Mac OS X kullananlar için BSD find'da -printf seçeneği mevcut değildir (bu hatayı alırsınız :)find: -printf: unknown primary or operator . Neyse ki GNU find'ı Homebrew üzerinden kurabilirsiniz ( Fink ve Macports için de bir seçenek olmalı ):

brew install findutils

Yükledikten sonra GNU bul, sizin için mevcut olacaktır gfind. Yani, yapmanız gereken tek şey yukarıdaki satırı şu şekilde değiştirmek:

gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

3
Güzel bir. Ls -R ile tüm dizin gruplama olayı can sıkıcı.
El Yobo

1
Harika kod, senaryoyu yaklaşık olarak aldı. 13.000 fotoğrafı birçok farklı klasörde sıralamak ve yazdırmak için 5 saniye (Cygwin aracılığıyla oldukça yavaş bir bilgisayarda).
Magnus

Oh şimdi bu harika. findYazar kadar aşina olmayan insanlar için (benim gibi) , bu argümanlar, -printfiçinde bulunabilecek biçim yönergeleridir man find( printfo sayfada beşinci örneğini arayın ).
Owen Blacker

4
Bunu MacOS'ta kullanmak isteyen ancak findutils yüklemekle uğraşmak istemeyen herkes için: find . -type f -print0 | xargs -0 stat -f "%m %Sp %l %-8Su %-8Sg %8z %Sm %N" | sort | cut -f 2- -d' 'size MacOS'ta kabaca aynı çıktıyı yalnızca yerleşik yardımcı programları kullanarak verecektir
Jaymon

sort -rSıralamayı tersine çevirmek ve en son değiştirilen dosyaları üstte tutmak için.
maryisdead

0

MAC OSX 2019

Ne zaman oluşturulduğunu umursamıyorsanız, ancak listenizin sıralanmasını istiyorsanız, bu komutu kullanın.

==> ls -t

Tarih ve kullanıcı bilgilerini sipariş etmek ve görmek istiyorsanız bu komutu kullanın

===> ls -lt


0

İçin zshkullanıcılar, ayrıca kullanabilirsiniz glob eleme (ayrıca üzerinde belgelenmiştir man zshexpn):

echo *(om)

Nerede oaçılımı , sıralama sipariş yukarı ve maçılımı son değişiklik zaman .

Bu, bir for döngüsü veya başka bir komutta kullanıldığında yararlı olabilir:

for file in *(^om); do
  [ -e "$file" ] || continue
  # do something with file orderer from least recently modified to last modified
done

Veya başka bir glob niteleyiciyle zincirlenmiş:

last_modified_file=(*(om[1]))
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.