Dalam urutan apa tanggal dipesan oleh? Tentu bukan urutan alfanumerik.
ls -lt
mengurutkan berdasarkan waktu modifikasi. Tapi saya butuh waktu pembuatan.
files
ls
timestamps
InquilineKea
sumber
sumber
Jawaban:
Sebagian besar unices tidak memiliki konsep waktu pembuatan file. Anda tidak dapat
ls
mencetaknya karena informasinya tidak direkam. Jika Anda memerlukan waktu pembuatan, gunakan sistem kontrol versi : tentukan waktu pembuatan sebagai waktu check-in.Jika varian unix Anda memiliki waktu pembuatan, lihat dokumentasinya. Misalnya, pada Mac OS X (satu-satunya contoh yang saya tahu¹), gunakan
ls -tU
. Windows juga menyimpan waktu pembuatan, tetapi itu tidak selalu terkena port utilitas unix, misalnya Cygwinls
tidak memiliki opsi untuk menunjukkannya. Thestat
utilitas dapat menunjukkan waktu penciptaan, yang disebut “waktu lahir” di utilitas GNU, jadi di bawah Cygwin Anda dapat menampilkan file diurutkan berdasarkan waktu kelahiran denganstat -c '%W %n' * | sort -k1n
.Perhatikan bahwa ctime (
ls -lc
) bukan waktu pembuatan file , ini adalah waktu perubahan inode . Waktu perubahan inode diperbarui setiap kali ada sesuatu tentang perubahan file (konten atau metadata) kecuali bahwa waktu tidak diperbarui ketika file hanya dibaca (bahkan jika atime diperbarui). Secara khusus, waktu selalu lebih baru daripada waktu (waktu modifikasi konten file) kecuali waktu telah secara eksplisit diatur ke tanggal di masa depan.sumber
ls -c
.ls --help
menunjukkan apa yang-c
dikombinasi dengan-l
dan-lt
.-U
mengurutkan berdasarkan waktu pembuatan. Di bawah Solaris 10.x:/usr/bin/ls
tidak mendukung-U
,/usr/ucb/ls
mendukung ,-U
dan mengurutkan berdasarkan waktu pembuatan. Hasil ini jelas tergantung pada sistem file yang menyimpan info itu di tempat pertama.Sayangnya,
stat(2)
API tidak menyediakan cara untuk mendapatkan waktu pembuatan file, karena tidak diperlukan oleh standar Unix.Namun, beberapa sistem file, seperti
ext4
, menyimpan informasi ini dalam metadatas file. Tidak ada cara standar untuk mendapatkannya, tetapi ada cara (ext
hanya sistem file):Anda akan mendapatkan sesuatu yang menyebutkan
crtime
( tidakctime
!) Jika Anda gunakanext4
.Perintah ini mungkin membutuhkan waktu untuk kembali, mungkin karena ia juga mencantumkan setiap tingkat yang terkait dengan file.
Sekarang jika Anda ingin memesan file berdasarkan tanggal pembuatan, saya kira ini tidak mudah (juga tidak benar). Seperti yang dikatakan Gilles , mungkin akan lebih mudah jika Anda menggunakan sistem kontrol revisi. Tetapi Anda dapat mencoba melihat
ext4
API ...Saya mencoba
stat -c '%w' myfile
perintah padaext4
filesytem pada sistem Ubuntu (cukup baru) tanpa hasil (hanya menjawab-
).sumber
f='/path/to/file'; debugfs -R "stat $f" $(df $f|(read a; read a b; echo "$a"))|grep crtime
Berikut skrip Perl yang menggunakan jawaban Totor untuk mencapai apa yang Anda inginkan (jika filesystem Anda adalah ext4).
Bekerja pada mesin rumah saya (Ubuntu) dan server saya (CentOS), tetapi tidak diuji lebih dari itu, jadi ymmv.
sumber
Gunakan perintah ini
ls -lct
untuk mengurutkan file sesuai tanggal pembuatan.sumber
ctime
adalah perubahan waktu, dan bukan menciptakan waktu.