31 votes

Comment changer le format d'heure utilisé par la ligne de commande ls sous osx ?

Je veux faire ls afficher l'heure en ISO (format militaire). Comment puis-je modifier ce comportement ?

Sous Linux, je savais que je pouvais forcer ls à afficher le temps en format long en utilisant --full-time mais cela ne fonctionne pas sous OS X.

Mise à jour : Je sais que le format utilisé par la commande est basé sur le format locale paramètres. Le problème est que sous OS X, je n'ai pas pu utiliser l'astuce consistant à paramétrer LC_TIME=en_DK .

1 votes

Une non-réponse, mais qui peut quand même être utile : La commande stat(1) est assez flexible et peut être utilisée pour afficher les horodatages dans n'importe quel format.

0 votes

Gls (gnu ls) que j'ai mentionné dans ma réponse peut prendre un drapeau --style= où vous pouvez spécifier une chaîne +FORMAT, ainsi vous pouvez faire apparaître la date comme vous le souhaitez.

0 votes

J'aimerais connaître un moyen. Le manuel BSD d'Apple pour ls semble ne rien proposer pour le formatage des dates, à part la modification du fuseau horaire et le tri par date plutôt que par alpha. developer.apple.com/library/mac/documentation/Darwin/Référence/

20voto

Daisuke Shimamoto Points 1141

Si vous installez gnu coreutils, alors gnu ls est disponible, et fera ce qu'il faut. Si vous utilisez brew comme gestionnaire de paquets, c'est aussi simple que ça :

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

0 votes

Merci, c'est utile mais cela ne résout pas le problème. Le format complet utilisé n'est toujours pas ISO-8601.

0 votes

OK - vous pouvez installer gnu coreutils qui inclut gnu ls, qui fera ce que vous voulez. La méthode la plus simple est l'une des méthodes suivantes : brew, MacPorts ou Fink. J'utilise brew - donc il suffit de lancer 'brew install coreutils'. Vous aurez alors gls disponible.

2 votes

Notamment, brew install coreutils résulte en /usr/local/bin/gls en cours d'installation, vous devez donc exécuter gls au lieu de ls .

19voto

algal Points 971

La fonction intégrée d'OS X ls ne prend pas d'arguments de formatage de temps, mais la commande stat prend des chaînes au format strftime, de sorte que vous pouvez obtenir une approximation de ce que vous voulez en faisant :

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

Le site %FT%T produit un horodatage local ISO8601. Ajouter un %z si vous voulez un décalage UTC.

Mais si l'horodatage est correct, le reste n'est qu'une approximation de ce que vous obtiendriez avec ls. Par exemple, ls -l aligne correctement les champs dans les colonnes, peut coloriser la sortie, et bien sûr, il liste le contenu des répertoires plutôt que de vous demander de passer tous les noms de fichiers comme arguments. Vous pouvez au moins reproduire l'alignement correct en faisant passer la sortie par la commande tr pour convertir tous les espaces en tabulations :

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

Alternativement, je pense qu'il devrait être possible d'obtenir ls -l de produire un timestamp ISO8601 en définissant une locale personnalisée, mais je ne l'ai pas vu faire.

2voto

aboy021 Points 101

En utilisant MacOS Monterrey, ce qui suit fonctionne pour moi :

ls -lD '%FT%T'

J'utilise un alias qui préserve également la sortie colorée :

alias ls="ls -D '%FT%T' --color=auto"

1voto

Bruce Smith Points 31
stat -l -t '%FT%T' *

Ça a bien marché pour moi. J'avais besoin de voir à la fois la taille du fichier et l'horodatage. Je me demande pourquoi Apple a jugé bon d'écarter l'horodatage assez standard de ls -l . J'ai même sorti mon UNIX en quelques mots !

-2voto

Kumar Points 1

ls -l --time-style=iso fonctionne bien pour moi.

1 votes

Pas du tout. Mountain Lion.

2 votes

Pas sur les Mavericks non plus.

5 votes

Cela fonctionne probablement bien pour le PO, parce qu'il ou elle a installé un système non autonome. ls sans s'en rendre compte, via un gestionnaire de paquets comme brew.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X