(7 jawaban)
Tutup 7 tahun yang lalu.
Bagaimana saya bisa melihat ketika file dibuat. Saya telah melihat halaman manual
ls -lc
adalah untuk modifikasi terakhir dari status file
ls -lu
untuk waktu akses
ls -l
tidak tepat menunjukkan jam berapa, terakhir diubah?
Saya mencoba ini, tetapi mereka tidak memberi saya waktu untuk membuat file.
Jawaban yang Diterima:
Pada OS/X atau FreeBSD, ini adalah opsi -U. Linux sekarang juga menyimpan waktu lahir/pembuatan di sebagian besar sistem file aslinya, tetapi belum ada API untuk mengambilnya (edit 2018 :sejak kernel 4.11, sekarang ada statx()
panggilan sistem, dan karena glibc 2.28 pembungkus libc untuknya dan sejak coreutils 8.31, GNU stat
dapat menampilkannya, dan (edit 2021 ) sejak 8.32 GNU ls
dapat menampilkannya dengan --time=birth
).
Pada sistem file ext4, Anda dapat menggunakan debugfs untuk mendapatkannya:
$ sudo debugfs /dev/some/fs
stat /some/file
[...]
crtime: 0x53208d7a:9045625c -- Wed Mar 12 16:38:18 2014
[...]
(di mana /some/file
adalah jalur di dalam sistem file itu)
Untuk sistem file NTFS, dan dengan asumsi Anda menggunakan ntfs-3g untuk memasangnya, lihat Bagaimana cara mendapatkan tanggal pembuatan file pada volume logis NTFS?
Jika Anda memiliki sistem Linux yang cukup baru, Anda dapat menggunakan xfs_io
statx
subperintah untuk memanggil statx()
yang baru panggilan sistem dan dapatkan waktu lahir:
$ TZ=UTC0 xfs_io -c 'statx -v' /some/file
[...]
stat.btime = Thu Feb 7 17:11:20 2019
[...]
(di sini menggunakan waktu UTC dengan TZ=UTC0
karena jika tidak, tanggalnya akan ambigu karena offset UTC tidak dikeluarkan). Atau dengan statx -r
yang memberi Anda bagian nanodetik dan waktu yang lebih mudah diuraikan:
$ xfs_io -c 'statx -r' /some/file
[...]
stat.btime.tv_sec = 1549559480
stat.btime.tv_nsec = 964691587
[...]
Dengan GNU stat
8.31 atau lebih baru pada sistem dengan glibc 2.28 atau lebih baru dan kernel 4.11 atau lebih baru:
$ stat /some/file | grep Birth:
Birth: 2018-05-24 16:27:28.415875403 +0100
$ stat -c '%.9W %w' /some/file
1527175648.415875403 2018-05-24 16:27:28.415875403 +0100
Dengan GNU ls
8.32 atau lebih baru pada sistem dengan glibc 2.28 atau lebih baru dan kernel 4.11 atau lebih baru:
$ ls -l --time=birth --full-time /some/file
-rw-r--r-- 1 stephane stephane 2333836 2018-05-24 16:27:28.415875403 +0100 /some/file
Secara tradisional, Unix tidak menyimpan waktu pembuatan.
Perhatikan bahwa nilai tersebut mungkin memiliki makna yang lebih kecil dari yang Anda kira.
Waktu modifikasi mencerminkan usia data dalam file itu, waktu akses saat terakhir diakses, waktu perubahan inode sangat berguna untuk mencadangkan perangkat lunak misalnya, karena Anda tidak tahu apa-apa tentang file yang telah berubah sejak saat itu (kecuali mungkin path lengkapnya yang dapat Anda lihat pada waktu komponen direktorinya).
Terkait:masalah dengan file bundleconfig?Waktu pembuatan adalah ketika inode muncul (well memiliki jumlah tautan dari 0 hingga 1, inode itu mungkin telah dialokasikan dan dihapus di kehidupan sebelumnya), itu tidak mencerminkan usia data apa pun yang terkait dengan file itu (data ditulis setelah file dibuat), itu tidak memberi tahu kami apakah file melalui jalur itu muncul pada saat itu (file yang kami lihat dapat dibuat dengan jalur yang berbeda dan ditautkan atau dipindahkan ke sana nanti).