Sen "demek ls taşınıyor kafasına tam korkunç bir uzun zaman alır".
Bunun nedeni ls
dizininizdeki dosya sayısı değil . Tek bir dizinde 100.000 dosyanız varsa, bu sorunu çözmenin herhangi bir yolu, bunları sıralamayı veya herhangi bir çıktıyı yazdırmayı düşünmeden önce tüm 100.000 dosya hakkında bilgi almalıdır.
Çok uzun sürerse, gerçek çözüm dosyaları birden çok dizine bölmektir.
Dosyaları çeşitli dizinlere dağıtamıyorsanız, dikkate alınacak dosya sayısını daraltmanın bir yolu var mı? örneğin dosya adları bir tarih içeriyorsa, sistemin 100.000 dosyayı sıralaması gerekmeyecek bir joker karakter ekleyebilirsiniz. Ya da belki sıralı olarak numaralandırılırlar? (Bu yardımcı olabilir veya olmayabilir, ama denemeye değer.)
Bunu kaç kez yapmaya çalışıyorsunuz? Belki de yeniden kullanım için çıktıyı kaydetmeye / önbelleğe almaya değer .
Şimdi bir soru.
"Değişim zamanı" değil, "yaratma zamanı" demek istediğinizden emin misiniz ? Çoğu araç, "oluşturma zamanını" değil, yalnızca "değiştirme zamanını" görüntüleyebilir.
"Oluşturma zamanı" elde etmek, ext4 dosya sistemi ve kurulumu kolay olmayan bazı araçlar gerektiren çok yeni bir şeydir.
Zaman değiştirmek istiyorsanız
Değişim zamanı (kısaca ctime), dosyanın özniteliklerinin en son değiştirildiği zaman anlamına gelir.
ls -c
ctime'a göre sıralar.
Çıktının azalan sırada değil, artan sırada olmasını istersiniz, bu nedenle çıktıyı da -r
seçenekle tersine çevirmeniz gerekir .
Böylece bunu şöyle yapabilirsiniz:
ls -cr | head -n 100
Aynı soruna daha uzun bir çözüm kullanarak stat
:
find . -mindepth 1 -maxdepth 1 -exec stat -c $'%Z\t%n' '{}' \; |
sort -k 1n |
cut -f 2 -d $'\t' |
head -n 10 |
sed -e 's/^\.\///'
ama bu ls -cr
benim sistemime göre daha yavaş çalışıyor .
Değişiklik zamanı istiyorsanız
Değiştirme zamanı (kısaca mtime) dosyanın içeriğinin en son değiştirildiği zaman anlamına gelir.
ls -t
mtime tarafından sıralar.
Değişim ls -cr
için ls -tr
(en iyi seçenek) ya da değişim stat -c $'%Z\t%n'
için stat -c $'%Y\t%n'
.
Yaratılış zamanına ihtiyacınız varsa
(kısaca crtime)
Bu daha zor.
İlk olarak, dizinin kullanılarak biçimlendirilmiş bir dosya sisteminde olduğundan emin olun ext4
. Bunu tune2fs -l <device name>
kontrol etmek için kullanabilirsiniz .
Sonra, burada size yardımcı olabilecek yeni bir stat
format %W
var. Bunu elde etmek için, Ekim 2010'da veya sonrasında yayınlanan bir GNU Coreutils sürümünü indirmeniz , ayıklamanız, derlemeniz ve yüklemeniz gerekir.
Sonra, çekirdeğinize bağlı olarak, bu işe yarayabilir (denemedim).
find . -mindepth 1 -maxdepth 1 -exec stat -c $'%W\t%n' '{}' \; |
sort -k 1n |
cut -f 2 -d $'\t' |
head -n 10 |
sed -e 's/^\.\///'
Ayrıca bakınız:
Hakkında hata alırsanız "'$\t'
'$\t'
Notasyonu gerektirir bash
ya zsh
: o çalışmaz dash
veya sh
Ubuntu üzerinde. Gerçekten bu kabukları kullanmanız gerekirse, herhangi değiştirmeniz gerekecektir \t
için Ctrl+ V, Tabve lider kaldırmak $
sadece açılış alıntı öncesinden.
find -mtime +<number of days> -delete
belirli bir yaştan daha eski olan tüm dosyaları temizlemektir. Bu, hiçbir çeşit gerekli olmadığı anlamına gelecektir.