Saya ingin membuat ls
waktu tampilan dalam ISO
format (format militer). Bagaimana saya bisa mengubah perilaku ini?
Di Linux saya tahu bahwa saya bisa memaksa ls untuk menampilkan waktu dalam format panjang oleh kami, --full-time
tetapi ini tidak berfungsi pada OS X.
Pembaruan: Saya tahu bahwa format yang digunakan oleh perintah didasarkan pada locale
pengaturan. Masalahnya adalah bahwa pada OS XI tidak dapat menggunakan trik pengaturan LC_TIME=en_DK
.
command-line
unix
Sorin
sumber
sumber
ls
tampaknya tidak menawarkan apa pun untuk memformat datetimes, selain mengubah zona waktu dan mengurutkan berdasarkan datetime daripada alpha. developer.apple.com/library/mac/documentation/Darwin/Reference/…Jawaban:
Jika Anda menginstal gnu coreutils maka gnu ls tersedia, yang akan melakukan apa yang diperlukan. Jika Anda menggunakan minuman sebagai pengelola paket, sesederhana:
sumber
brew install coreutils
menghasilkan/usr/local/bin/gls
diinstal, jadi Anda harus menjalankangls
bukanls
.gls -l --time-syle="+%I"
(atau apa pungdate
format gaya yang benar untuk ISO-8601).Perintah bawaan OS X
ls
tidak memerlukan waktu untuk memformat argumen, tetapistat
perintah tersebut mengambil string format strftime sehingga Anda bisa mendapatkan perkiraan tentang apa yang Anda inginkan dengan melakukan:The
%FT%T
menghasilkan ISO8601 timestamp lokal. Tambahkan a%z
jika Anda ingin offset UTC.Tetapi sementara cap waktu tepat, sisanya hanya mendekati apa yang akan Anda dapatkan dari ls. Misalnya,
ls -l
dengan benar menyelaraskan bidang ke dalam kolom, dapat mewarnai keluaran, dan tentu saja mencantumkan konten direktori daripada mengharuskan Anda untuk meneruskan semua nama file sebagai argumen. Anda setidaknya dapat mereproduksi penyelarasan yang tepat dengan menyalurkan output melaluitr
untuk mengubah semua spasi menjadi tab:Atau, saya pikir mungkin untuk bisa
ls -l
menghasilkan cap waktu ISO8601 dengan mendefinisikan lokal kustom, tapi saya belum melihatnya selesai.sumber
ls -l --time-style=iso
bekerja dengan baik untuk saya.sumber
ls
tanpa menyadarinya, melalui manajer paket seperti minuman./usr/local/bin/gls
menginstal viabrew install coreutils
, dan itu mendukung--time-style
opsi. OP mungkin telah berjalanbrew install coreutils --with-default-names
yang akan menghasilkan/usr/local/bin/ls
diinstal (di antara utilitas lain), atau mungkin OP mengatur symlink manualgls
.which ls
?