Ich möchte die ls
Anzeigezeit im ISO
Format (Militärformat) machen. Wie kann ich dieses Verhalten ändern?
Unter Linux wusste ich, dass ich ls zwingen könnte, die Zeit im Langformat von usin anzuzeigen, --full-time
aber dies funktioniert unter OS X nicht.
Update: Ich weiß, dass das vom Befehl verwendete Format auf den locale
Einstellungen basiert . Das Problem ist, dass OS XI den Einstellungs-Trick nicht anwenden konnte LC_TIME=en_DK
.
command-line
unix
Sorin
quelle
quelle
ls
bietet anscheinend nichts zum Formatieren von Datumsangaben, außer zum Ändern der Zeitzone und zum Sortieren nach Datum und Uhrzeit anstatt nach Alpha. developer.apple.com/library/mac/documentation/Darwin/Reference/…Antworten:
Wenn Sie gnu coreutils installieren, steht Ihnen gnu ls zur Verfügung. Wenn Sie brew als Paketmanager verwenden, ist das so einfach wie:
quelle
brew install coreutils
in den Ergebnissen/usr/local/bin/gls
installiert, so dass Sie ausführen müssengls
stattls
.gls -l --time-syle="+%I"
(oder wie auch immer das korrektegdate
Format für ISO-8601 lautet).Der in OS X integrierte
ls
Befehl benötigt keine Argumente für diestat
Zeitformatierung , aber für den Befehl werden Strftime-Formatierungszeichenfolgen verwendet, damit Sie eine ungefähre Vorstellung davon erhalten, was Sie möchten:Das
%FT%T
erzeugt einen lokalen ISO8601-Zeitstempel. Fügen Sie ein hinzu,%z
wenn Sie einen UTC-Offset wünschen.Aber während der Zeitstempel stimmt, entspricht der Rest nur ungefähr dem, was Sie von ls erhalten würden. Zum Beispiel
ls -l
können richtig ausrichtet Felder in Spalten, kolorieren Ausgang, und natürlich führt es Verzeichnisinhalte anstatt dass Sie alle Dateinamen als Argument zu übergeben. Sie können die korrekte Ausrichtung zumindest reproduzieren, indem Sie die Ausgabe weiterleitentr
, um alle Leerzeichen in Registerkarten zu konvertieren:Alternativ denke ich, dass es möglich sein sollte
ls -l
, einen ISO8601-Zeitstempel durch Definieren eines benutzerdefinierten Gebietsschemas zu erstellen, aber ich habe es nicht gesehen.quelle
ls -l --time-style=iso
funktioniert gut für mich.quelle
ls
über einen Paketmanager wie brew installiert hat, ohne es zu bemerken./usr/local/bin/gls
via installiertbrew install coreutils
, und das unterstützt die--time-style
Option. Möglicherweise wurde das OP ausgeführt,brew install coreutils --with-default-names
was/usr/local/bin/ls
zur Installation (unter anderem von Dienstprogrammen) führen würde, oder das OP hat möglicherweise einen manuellen Symlink zu eingerichtetgls
.which ls
?