如何更改ls -l自定义命令的月份格式

时间:2018-11-14 18:03:17

标签: c stat localtime

执行此命令时:

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

终端显示:

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

我试图用stat.h做自己的find命令来做同样的事情:

[...] //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 :(得分:0)

默认情况下,C程序在C语言环境下运行。好像您想要一个不同的语言环境,因此将setlocale()函数与另一个语言环境一起使用。最简单的由空字符串指定。 (语言环境的“ C”值指定了C转换的最小环境;语言环境的“”值指定了特定于语言环境的本机环境。其他实现定义的字符串也可以作为第二个参数传递给setlocale。 ):

setlocale(LC_TIME, “”);

这只会影响时间;您可以使用LC_ALL更改所有内容。