Osx'ta ls komut satırı tarafından kullanılan zaman biçimini nasıl değiştiririm?


27

Ben yapmak istiyorum lsizlemede zamanı ISObiçimi (askeri biçimi). Bu davranışı nasıl değiştirebilirim?

Linux'ta, zamanı bizim için uzun formatta göstermeye zorlayabileceğimi biliyordum, --full-timeancak bu OS X'te işe yaramıyor.

Güncelleme: Komut tarafından kullanılan formatın localeayarlara dayandığını biliyorum . Sorun, OS XI'de ayar numarası kullanamamasıdır LC_TIME=en_DK.


1
Cevap dışı, ancak yine de muhtemelen yararlı: Stat (1) komutu oldukça esnektir ve zaman damgalarını istenen herhangi bir formatta görüntülemek için yapılabilir.
Harald Hanche-Olsen

Cevabımda bahsettiğim gls (gnu ls) + FORMAT dizesini belirtebileceğiniz bir --style = flag alabilir, böylece tarihin istediğiniz şekilde görünmesini sağlayabilirsiniz.
barryj

Keşke bir yolunu bilseydim. Apple'ın BSD kullanım kılavuzu ls, zaman dilimini değiştirmek ve alfa yerine tarih-tarihine göre sıralama dışında günleri biçimlendirmek için hiçbir şey sunmuyor gibi görünüyor. developer.apple.com/library/mac/documentation/Darwin/Reference/…
jtheletter

Yanıtlar:


16

Eğer gnu coreutils takarsanız, gerektiğinde yapacak olan gnu ls kullanılabilir. Demlemek bir paket yöneticisi olarak kullanıyorsanız, bu kadar basit:

brew install coreutils
gls -l --time-style=full-iso

Teşekkürler, bu faydalıdır ancak sorunu çözmez. Kullanılan tam format hala ISO-8601 değil.
sorin

Tamam - ne istersen onu yapacak gnu ls içeren gnu coreutils'i kurabilirsin. En kolay yol demleme, MacPorts veya Fink'tir. Ben demlemek kullanıyorum - bu yüzden sadece çalışan 'demlemek kurulum coreutils' çalışmaları. Daha sonra mevcut gls olacaktır.
barryj

1
Özellikle, yüklü brew install coreutilssonuçlanır /usr/local/bin/gls, bu yüzden glsyerine çalıştırmak gerekir ls.
erik.weathers

Zaman formatını aşağıdakilerle belirtmeniz gerekir gls -l --time-syle="+%I"(veya gdateISO-8601 için doğru stil formatı ne olursa olsun ).
rubynorails

Doğru çağrı bu nedenle; gls -l - time-style = tam iso
AnneTheAgile

13

OS X'in yerleşik lskomutu bağımsız değişkenleri biçimlendirmek için zaman almaz, ancak statkomut strftime format dizgilerini alır, böylece ne yaptığınıza dair bir tahmin elde edebilirsiniz:

stat -l -t '%FT%T' *

%FT%TBir ISO8601 yerel zaman damgası üretir. %zUTC ofseti istiyorsanız bir ekleyin .

Fakat zaman damgası doğru olsa da, geri kalan sadece ls'den alacağınız şeylere yaklaşıyor. Örneğin, ls -lalanları sütunlara uygun şekilde hizalar, çıktıyı renklendirebilir ve elbette tüm dosya adlarını argüman olarak iletmenizi istemek yerine dizin içeriğini listeler. En azından trtüm boşlukları sekmelere dönüştürmek için çıktıyı pipo ederek uygun hizalamayı çoğaltabilirsiniz :

stat -l -t '%F%T' * | tr ' ' \\t

Alternatif olarak, ls -lözel bir yerel ayar tanımlayarak bir ISO8601 zaman damgası üretmenin mümkün olabileceğini düşünüyorum , ancak bunun yapıldığını görmedim.


-1

ls -l --time-style=iso benim için iyi çalışıyor.


1
Yok mu. Dağ Aslanı.
Nakilon 17:13

2
Mavericks'te de değil.
Clay Bridges,

4
Muhtemelen OP için gayet iyi çalışıyor, çünkü lsdemlemek gibi bir paket yöneticisi aracılığıyla, bir sistemi olmayan bir sistemi kurdu .
alg

1
@Algal ile aynı fikirde. /usr/local/bin/glsÜzerinden kurulum yaptım brew install coreutilsve bu --time-styleseçeneği destekliyor . OP, kuruluma brew install coreutils --with-default-namesyol açacak şekilde çalışabilir /usr/local/bin/ls(diğer hizmetlerin arasında) veya belki de OP bir manuel bağlantı kurar gls.
erik.weathers

Girerken ne görüyorsunuz which ls?
mschaef
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.