Как изменить формат месяца для пользовательской команды ls -l - PullRequest
0 голосов
/ 14 ноября 2018

Когда вы делаете эту команду:

find ok/ -exec ls -l -d {} \;

Терминал отображает:

drwxrwxrwx 2 alexia alexia 4096 8 oct.  15 22:31 ok/

Я попытался создать собственную команду поиска, чтобы сделать то же самое с stat.h:

[...] //Other file information
struct stat fileStat;
stat(path,&fileStat)
char buffer[20];
struct tm *time
time = localtime(&(fileStat.st_mtime));
strftime(buffer, 20, "%b %e  %Y", time);
printf("%s", buffer);

и отображает:

[...]
8 Oct  15 22:31 ok/

Формат месяца не очень хороший, и я не знаю, как сделать это правильно.

Приветствия

1 Ответ

0 голосов
/ 14 ноября 2018

По умолчанию программы на Си запускаются с языком Си.Выглядит так, как будто вам нужна другая локаль, поэтому используйте функцию setlocale() с другой локалью.Самое простое определяется пустой строкой.( Значение «C» для языкового стандарта задает минимальное окружение для перевода на C; значение «» для языкового стандарта задает родную среду, зависящую от языкового стандарта. Другие определяемые реализацией строки могут передаваться как второй аргумент setlocale.):

setlocale(LC_TIME, “”);

Это влияет только на время;Вы можете использовать LC_ALL, чтобы изменить все.

...