Je veux faire ls
afficher l'heure au ISO
format (format militaire). Comment puis-je changer ce comportement?
Sous Linux, je savais que je pouvais forcer ls à afficher l'heure au format long par usin --full-time
mais cela ne fonctionne pas sur OS X.
Mise à jour: je sais que le format utilisé par la commande est basé sur les locale
paramètres. Le problème est que sur OS XI n'a pas pu utiliser l'astuce de réglage LC_TIME=en_DK
.
command-line
unix
Sorin
la source
la source
ls
semble ne rien offrir pour le formatage des heures, à part le changement de fuseau horaire et le tri par date et heure plutôt que par alpha. developer.apple.com/library/mac/documentation/Darwin/Reference/…Réponses:
Si vous installez gnu coreutils, alors gnu ls est disponible, qui fera ce qui est requis. Si vous utilisez brew comme gestionnaire de packages, c'est aussi simple que:
la source
brew install coreutils
entraîne l'/usr/local/bin/gls
installation, vous devez donc exécutergls
au lieu dels
.gls -l --time-syle="+%I"
(ou quel que soit legdate
format de style correct pour ISO-8601).La
ls
commande intégrée d'OS X ne prend pas d'arguments de formatage temporel, mais lastat
commande prend des chaînes de formatage strftime afin que vous puissiez obtenir une approximation de ce que vous voulez en faisant:Le
%FT%T
produit un horodatage local ISO8601. Ajoutez un%z
si vous souhaitez un décalage UTC.Mais bien que l'horodatage soit correct, le reste ne fait qu'approcher ce que vous obtiendriez de ls. Par exemple,
ls -l
aligne correctement les champs en colonnes, peut coloriser la sortie et, bien sûr, il répertorie le contenu du répertoire plutôt que de vous obliger à passer tous les noms de fichiers comme arguments. Vous pouvez au moins reproduire l'alignement correct en canalisant la sortietr
pour convertir tous les espaces en tabulations:Alternativement, je pense qu'il devrait être possible de
ls -l
produire un horodatage ISO8601 en définissant un environnement local personnalisé, mais je ne l'ai pas vu faire.la source
ls -l --time-style=iso
fonctionne bien pour moi.la source
ls
sans s'en rendre compte, via un gestionnaire de paquets comme brew./usr/local/bin/gls
installé viabrew install coreutils
, et cela prend en charge l'--time-style
option. L'OP peut avoir fonctionné,brew install coreutils --with-default-names
ce qui entraînerait/usr/local/bin/ls
son installation (parmi d'autres utilitaires), ou peut-être que l'OP a créé un lien symbolique manuel versgls
.which ls
?