Dosyaları “bul” bulma işlemini ters kronolojik sırada nasıl yapabilirim?


17

Alt dizinlerdeki dosyaları en son önce zaman damgasına (oluşturma) göre sıralanmış olarak bulmak istiyorum.

Man sayfasına baktım ama sadece zaman damgasına göre sıralamak yerine zaman damgasına göre filtrelemenize izin veriyor gibi görünüyor.

Bunu findbaşarmak için hangi seçeneklere geçebilirim ? Alternatif olarak, sortzaman damgasına göre sıralamak gibi başka bir araçla nasıl birleştirebilirim ?


1
Önce findderinlik araması ve genişlik ilk araması arasında seçim yapmanın ötesinde, belirli bir sıralı düzende hiçbir şey yapamazsınız .
Jonathan Leffler

@ merlin2011, lütfen cevap seçiminizi burada gözden geçirin - şu anda seçili olan cevap, findtek bir örneğine geçirilebileceğinden daha fazla dosya bulunduğunda buggy (gerçekte doğru sıralanmamış çıktılar üretecektir) ls.
Charles Duffy

@CharlesDuffy, not için teşekkürler! Kabul edilen cevapları güncelledim.
merlin2011

Yanıtlar:


32

Paul'ün çözümü genellikle iyi olsa da, basitçe olduğundan daha fazla I / O içerir:

find bin/ -type f -printf '%Ts\t%p\n' | sort -nr | cut -f2

findMilyonlarca dosya döndürürse ne olur ? Bunların hepsi çok uzun bir liste olarak sıralanmayacak mı? Hala verimli olacak mı? (Her dizini bağımsız olarak sıralamak yerine.)
Peter Mortensen

1
Yeni satırlar gibi dosya adlarındaki komik karakterlerle çalışmaz
Boris Brodski

2
Bu, user7385'in cevabı hakkında sadece bir yorumu hak ediyor, ancak bunu yapacak itibarım yok. -Z seçeneğinin find bin/ -type f -printf '%Ts\t%p\0' | sort -nrz | cut -f2 -z | xargs -0 lsyeni sürümlerinde, cutyeni satırlı dosya adları işe yarayacaktır.
MattBlissett

G / Ç miktarı, bu cevabı tercih etmenin ana nedeni bile değildir - doğruluk çok daha kritik bir ayrımdır. Bir kereden fazla başlatılması gereken xargs -0 ls -tçok fazla dosya olduğunda yaklaşım düzgün çalışmaz , ancak bu yaklaşım çalışmaya devam edecektir. xargsls
Charles Duffy

@PeterMortensen, "hepsini çok uzun bir liste olarak sıralamak", onları doğru bir sonuç veren sıralamanın tek yoludur. Üstelik diğer / kabul cevap yok "sıralama her dizin bağımsız" ya (tek recursing olmadan sıralama sadece tek bir dizine istiyorsa, tek kullanabilirsiniz -maxdepth 1üzerinde find).
Charles Duffy
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.