📄 myls.c
字号:
#include <stdio.h>#include <sys/stat.h>#include <sys/types.h>#include <dirent.h>#include <sys/time.h>#include <time.h>int main(int argc, char **argv){ struct stat sbuf; mode_t mode; char buf[1024]; DIR *dp; struct dirent *link; dp=opendir("."); if (dp==NULL) { return -1; } while ((link=readdir(dp))!=0) { if (lstat(link->d_name, &sbuf)==-1) { continue; } if (strcmp(link->d_name, ".") == 0 || strcmp(link->d_name, "..") == 0) { continue; } mode=sbuf.st_mode; char perms[] = "----------"; perms[0]='?'; switch (mode & S_IFMT) { case S_IFREG: perms[0] = '-'; break; case S_IFDIR: perms[0] = 'd'; break; case S_IFLNK: perms[0] = 'l'; break; case S_IFIFO: perms[0] = 'p'; break; case S_IFSOCK: perms[0] = 's'; break; case S_IFCHR: perms[0] = 'c'; break; case S_IFBLK: perms[0] = 'b'; break; } if (S_IRUSR & mode) perms[1] = 'r'; if (S_IWUSR & mode) perms[2] = 'w'; if (mode & S_IXUSR) perms[3] = 'x'; if (mode & S_IRGRP) perms[4] = 'r'; if (mode & S_IWGRP) perms[5] = 'w'; if (mode & S_IXGRP) perms[6] = 'x'; if (mode & S_IROTH) perms[7] = 'r'; if (mode & S_IWOTH) perms[8] = 'w'; if (mode & S_IXOTH) perms[9] = 'x'; perms[10] = '\0'; int off=0; memset(buf,0,sizeof(buf)); off += sprintf(buf+off, "%s ",perms); off += sprintf (buf + off, " %3d %-8d %-8d ",sbuf.st_nlink, sbuf.st_uid, sbuf.st_gid); off+=sprintf(buf + off, "%8lu ", (unsigned long)sbuf.st_size); char* p_date_format = "%b %e %H:%M"; char datebuf[13]={0}; struct tm* p_tm; //struct timeval tv; //long local_time; //gettimeofday(&tv,NULL); //local_time = tv.tv_sec; p_tm = localtime(&sbuf.st_mtime); /*if (sbuf.st_mtime > local_time || (local_time - sbuf.st_mtime) > 60*60*24*182) { p_date_format = "%b %e %Y"; } */ strftime(datebuf, sizeof(datebuf), p_date_format, p_tm); off += sprintf (buf + off, "%s ", datebuf); if (S_ISLNK(sbuf.st_mode)) { char tmp[1024]={0}; readlink(link->d_name,tmp,sizeof(tmp)); off += sprintf (buf + off, "%s -> %s", link->d_name,tmp); } else { off += sprintf (buf + off, "%s", link->d_name); } off += sprintf (buf + off, "%s", "\r\n"); printf("%s",buf); } closedir(dp); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -