Jawaban:
Ini tergantung pada apa yang Anda maksud dengan "dibuka", tetapi secara umum, ya. Ada tiga cap waktu yang biasanya direkam:
mtime- diperbarui ketika konten file berubah. Ini adalah waktu file "default" dalam kebanyakan kasus.ctime- diperbarui ketika file atau metadata (pemilik, izin) -nya berubahatime - diperbarui ketika file dibacaJadi, secara umum, apa yang ingin Anda lihat adalah atimefile. Anda bisa mendapatkannya dengan statatau dengan ls. Anda dapat menggunakannya ls -luuntuk melakukan ini, walaupun saya lebih suka menggunakan ls -l --time=atime(yang seharusnya didukung di hampir semua distribusi Linux modern) karena saya tidak sering menggunakannya, dan ketika saya melakukannya saya dapat mengingatnya dengan lebih baik. Dan untuk mengurutkan berdasarkan waktu, tambahkan -tbendera ke ls. Jadi begitulah.
Namun ada satu peringatan besar. Memperbarui atime setiap kali file dibaca menyebabkan banyak IO yang biasanya tidak perlu, memperlambat semuanya. Jadi, sebagian besar distribusi Linux sekarang default untuk noatimeopsi mount filesystem, yang pada dasarnya membunuh atimes, atau yang lain relatime, yang hanya memperbarui atimes setelah batas telah lewat (biasanya sekali per hari) atau jika file benar-benar dimodifikasi sejak membaca sebelumnya. Anda dapat menemukan apakah opsi ini aktif dengan menjalankan mountperintah.
Juga, perhatikan bahwa waktu akses adalah dengan inode, bukan dengan nama file, jadi jika Anda memiliki hardlink, membaca dari satu akan memperbarui semua nama yang merujuk ke file yang sama.
Dan, ketahuilah bahwa c bukanlah "ciptaan"; penciptaan tidak dilacak oleh sistem file Unix / Linux, yang tampaknya aneh tetapi sebenarnya masuk akal karena sistem file tidak memiliki cara untuk mengetahui apakah itu asli - mungkin file itu dibuat empat puluh tahun yang lalu dan disalin di sini. Dan, nyatanya, banyak editor file bekerja dengan membuat salinan dari aslinya. Jika Anda memerlukan informasi itu, yang terbaik adalah menggunakan sistem kontrol versi suka git.
mounthalaman manual yang diperbarui .
lsmempersingkat waktu secara default ke presisi yang masuk akal. Untuk melihat waktu dengan presisi penuh yang dapat digunakan --full-time.
ls -ltu daftar semua file, tunjukkan dan urutkan berdasarkan waktu akses.
Dari man ls:
-u with -lt: sort by, and show, access time with -l: show access
time and sort by name otherwise: sort by access time
Jika cantuman Anda adalah untuk konsumsi manusia, gunakan lsdengan salah satu bendera penyortiran tanggal ( -tuuntuk akses (baca) waktu, hanya -tuntuk waktu modifikasi (tulis) atau -tcuntuk waktu perubahan inode). Lihat jawaban mattdm untuk informasi lebih lanjut (khususnya peringatan tentang -adan definisi -c).
Jika ini untuk konsumsi program, penguraian output lsbermasalah . Jika shell Anda adalah zsh, Anda tidak perlu ls: zsh memiliki kualifikasi globbing untuk mengurutkan pertandingan dengan meningkatkan akses ( *(Oa)), perubahan inode ( *(Oc)) atau waktu modifikasi ( *(Om)). Huruf kecil oberubah seiring bertambahnya usia.
act_on_files_by_date *(Om)
Jika tidak, jika Anda tahu bahwa nama file tidak mengandung baris baru atau karakter yang tidak dapat dicetak (di lokal saat ini), maka Anda dapat melakukan sesuatu seperti
ls -t | while read -r name; do act_on_one_file "$name"; done
ls -t | xargs -I {} act_on_one_file {}
Jika Anda ingin menjalankan perintah pada banyak file sekaligus, Anda perlu pengaturan lebih lanjut. Catatan yang act_on_files_by_date $(ls -t)tidak berfungsi seperti ini, karena nama file yang mengandung karakter wildcard atau spasi akan diperluas dalam hasil substitusi perintah. Kode berikut berfungsi selama tidak ada nama file yang mengandung baris baru atau karakter yang tidak dapat dicetak:
IFS='
'
set -f
act_on_files_by_date $(ls -t)
set +f
unset IFS
Jika Anda ingin mengatasi nama file yang sewenang-wenang, Anda akan mengalami kesulitan tanpa menggunakan alat yang lebih kuat daripada shell standar: zsh, perl, python ...