Я хочу сделать ls
отображение времени в ISO
формате (военный формат). Как я могу изменить это поведение?
В Linux я знал, что могу заставить ls отображать время в длинном формате с помощью usin, --full-time
но это не работает на OS X.
Обновление: я знаю, что формат, используемый командой, основан на locale
настройках. Проблема в том, что на OS XI не удалось использовать хитрость настройки LC_TIME=en_DK
.
command-line
unix
Сорин
источник
источник
ls
похоже, ничего не предлагает для форматирования даты и времени, кроме изменения часового пояса и сортировки по дате и времени, а не по альфа. developer.apple.com/library/mac/documentation/Darwin/Reference/…Ответы:
Если вы устанавливаете gnu coreutils, то доступен gnu ls, который будет работать по мере необходимости. Если вы используете brew в качестве менеджера пакетов, это так просто:
источник
brew install coreutils
приводит/usr/local/bin/gls
к установке, поэтому вам нужно запуститьgls
вместоls
.gls -l --time-syle="+%I"
(или любогоgdate
другого правильного формата стиля для ISO-8601).Встроенная
ls
команда OS X не принимает аргументы форматирования времени, ноstat
команда принимает строки формата strftime, так что вы можете получить приближение того, что вы хотите, выполнив:%FT%T
Производит ISO8601 локальную метку времени. Добавьте,%z
если вы хотите смещение UTC.Но хотя временная метка верна, остальные только приближают то, что вы получите от ls. Например,
ls -l
правильно выравнивает поля по столбцам, может раскрасить вывод и, конечно, в нем перечисляется содержимое каталога, а не требовать передачи всех имен файлов в качестве аргументов. Вы можете, по крайней мере, воспроизвести правильное выравнивание, передавая выходные данные,tr
чтобы преобразовать все пробелы во вкладки:В качестве альтернативы, я думаю, что можно
ls -l
создать временную метку ISO8601, определив пользовательский языковой стандарт, но я этого не видел.источник
ls -l --time-style=iso
прекрасно работает для меняисточник
ls
не осознавая этого, с помощью менеджера пакетов, такого как brew./usr/local/bin/gls
установил черезbrew install coreutils
, и это поддерживает--time-style
опцию. OP может работать,brew install coreutils --with-default-names
что приведет к/usr/local/bin/ls
его установке (среди других утилит), или, возможно, OP установит ссылку на ссылку вручнуюgls
.which ls
?