Bagaimana saya bisa mendapatkan usia file yang diberikan dalam, setidaknya, beberapa hari?
Saya sangat sadar ls -lh
dan perintah serupa. Saya ingin sesuatu yang berfungsi seperti ini:
getfage <FILE> # prints out '12d' (12 days)
Juga, ini harus agak lintas platform karena saya juga ingin menggunakan ini di Mac OS X, tetapi kasus penggunaan utama ada di Linux-box saya.
CATATAN
Karena Linux tidak melacak waktu pembuatan, saya mencari solusi dua kali lipat: satu untuk mtime (linux) - yang terakhir kali mengatakan file diubah - dan satu untuk Mac OS X, yang dapat menangani mtime atau waktu pembuatan.
command-line
files
timestamps
Alexej Magura
sumber
sumber
stat
memberi Anda semua yang Anda butuhkan, kan?Jawaban:
Unix tidak melacak tanggal pembuatan. Satu-satunya informasi yang tersedia biasanya kali terakhir file itu:
( Dari jawaban ini )
Anda bisa mendapatkan tanggal yang terkait dengan file tertentu menggunakan
stat
perintah.Contoh
OSX dan HFS
Jika Anda menggunakan OSX, sistem file yang digunakan di bawah Unix itu adalah HFS . Ini adalah salah satu dari sedikit (yang saya tahu) yang membuat tanggal pembuatan dalam filesystem, bersama dengan waktu modifikasi dll. Mirip dengan Unix lainnya.
kutipan
Cap waktu
Prangko waktu selalu dipertahankan dalam sistem file, sehingga Anda dibatasi oleh pelacakan waktu apa pun yang ditawarkan melalui mereka (EXT3, EXT4, XFS, dll.).
Sistem File
Jika Anda penasaran lihat topik Wikipedia ini berjudul: Perbandingan sistem file . Ia memiliki daftar filesystem yang paling luas yang saya ketahui bersama dengan tabel yang bagus dari berbagai fitur dan status apakah itu didukung atau tidak dalam sistem file yang diberikan.
Referensi
sumber
OSX melacak pembuatan file, tetapi sebagian besar lainnya tidak, jadi tidak ada cara untuk mengetahui waktu yang telah berlalu sejak pembuatan file. Anda dapat memperoleh waktu yang telah berlalu sejak modifikasi terakhir pada hampir semua sistem operasi.
Tidak ada utilitas shell portabel untuk mengambil waktu modifikasi file, kecuali
ls
yang memiliki output yang hampir tidak mungkin diurai. Di Linux, perintah berikut ini mencetak usia file:Di Linux, Anda dapat menggunakan
stat -c %Y -- "$filename"
sebagai sinonim daridate +%s -r "$filename"
.OSX
date
danstat
perintah berbeda. Anda dapat menggunakan perintah berikut:Sistem Linux dan OSX yang tidak tertanam memiliki Perl yang terinstal secara default.
sumber
stat
, di Linux syscall belum dikerjakan ulang sehingga Anda harus menggunakan cara hackingdebugfs
.Berdasarkan jawaban oleh Gilles, berikut adalah fungsi bash yang mengembalikan usia file dalam hitungan detik atau kesalahan.
sumber
Anda dapat menggunakan
stat -f%B
,,ls -lU
ataumdls -n kMDItemFSCreationDate
untuk melihat waktu pembuatan (kelahiran) di OS X:sumber
melihat
man stat
untuk-c
(format) Pilihansumber