Anda mengatakan bahwa " ls disalurkan ke kepala memakan waktu yang lama sekali untuk lengkap".
Penyebabnya bukan ls
, tetapi jumlah file di direktori Anda. Jika Anda memiliki 100.000 file dalam satu direktori, cara apa pun untuk menyelesaikan masalah ini harus mendapatkan informasi tentang semua 100.000 file sebelum dapat berpikir tentang mengurutkannya atau mencetak output apa pun.
Jika terlalu lama, solusi sebenarnya adalah memecah file menjadi beberapa direktori.
Jika Anda tidak dapat menyebarkan file ke beberapa direktori, apakah ada cara untuk mempersempit jumlah file yang perlu dipertimbangkan ? mis. jika nama file menyertakan tanggal, mungkin Anda bisa memasukkan wildcard sehingga sistem tidak perlu mengurutkan 100.000 file. Atau mungkin mereka diberi nomor urut? (Ini mungkin atau mungkin tidak membantu, tetapi patut dicoba.)
Berapa kali Anda mencoba melakukan ini? Mungkin ada baiknya menyimpan / menyimpan output untuk digunakan kembali .
Sekarang, sebuah pertanyaan.
Apakah Anda yakin maksud Anda "waktu pembuatan" dan bukan "ubah waktu" ? Sebagian besar alat hanya dapat menampilkan "ubah waktu", bukan "waktu pembuatan".
Mendapatkan "waktu pembuatan" adalah hal yang sangat baru, yang membutuhkan sistem file ext4, dan beberapa alat yang tidak mudah dipasang.
Jika Anda ingin mengubah waktu
Ubah waktu (singkatnya waktu) berarti waktu atribut file terakhir berubah.
ls -c
macam berdasarkan waktu.
Anda ingin output dalam urutan naik, bukan turun, jadi Anda perlu membalikkan output dengan -r
opsi juga.
Jadi Anda bisa melakukannya seperti ini:
ls -cr | head -n 100
Solusi yang lebih lama untuk masalah yang sama menggunakan 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/^\.\///'
tapi itu berjalan lebih lambat dari ls -cr
pada sistem saya.
Jika Anda menginginkan waktu modifikasi
Waktu modifikasi (singkatnya mtime) berarti waktu isi file terakhir diubah.
ls -t
mengurutkan berdasarkan mtime.
Ubah ls -cr
ke ls -tr
(opsi terbaik) atau ubah stat -c $'%Z\t%n'
ke stat -c $'%Y\t%n'
.
Jika Anda membutuhkan waktu pembuatan
(singkatnya crtime)
Ini lebih sulit.
Pertama, pastikan direktori berada pada sistem file yang diformat menggunakan ext4
. Kamu bisa memakaitune2fs -l <device name>
untuk memeriksa ini.
Lalu, ada stat
format baru yang disebut %W
, yang dapat membantu Anda di sini. Untuk mendapatkannya, Anda harus mengunduh versi GNU Coreutils dirilis pada Oktober 2010 atau setelahnya, ekstrak, kompilasi, dan instal.
Kemudian, tergantung pada kernel Anda, ini mungkin berhasil (belum mencobanya).
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/^\.\///'
Lihat juga:
Jika Anda mendapatkan kesalahan tentang "'$\t'
The '$\t'
notasi membutuhkan bash
atau zsh
: tidak akan bekerja di dash
atau sh
di Ubuntu. Jika Anda benar-benar perlu menggunakan cangkang itu, Anda harus mengubah apa pun \t
menjadi Ctrl+ V, Tabdan menghapus yang memimpin $
dari sesaat sebelum kutipan pembukaan.
find -mtime +<number of days> -delete
membersihkan semua file yang lebih tua dari usia tertentu. Itu berarti tidak ada jenis yang diperlukan.