精华内容
下载资源
问答
  • stat获取到的文件属性的时间值是UTC时间。 在windows下看文件属性,时间+8北京时区刚好。 (4)利用stat 的属性判断属于是否属于同一挂载目录下的文件夹或者是否是同一设备 ...

    (注意:

    1.部分平台不支持stat64


    2.获取文件大小的类型 off_t,


    在linux中off_t类型默认是32位的long int(4个字节)


    文件太大时可能会溢出。


    建议gcc编译时加上-D_FILE_OFFSET_BITS=64选项,


    off_t将会是8个字节的类型。


    3.获取文件大小,很多人会想到C语言的ftell函数,但该函数


    局限性很大,特别是对于大文件。)


    (1)函数的定义


    表头文件:    #include <sys/stat.h>
                         #include <unistd.h>
    定义函数:    int stat(const char *file_name, struct stat *buf);

    函数说明:   通过文件名filename获取文件信息,并保存在buf所指的结构体stat
    返回值:     执行成功则返回0,失败返回-1,错误代码存于errno
    错误代码:
        ENOENT         参数file_name指定的文件不存在
        ENOTDIR        路径中的目录存在但却非真正的目录
        ELOOP          欲打开的文件有过多符号连接问题,上限为16符号连接
        EFAULT         参数buf为无效指针,指向无法存在的内存空间
        EACCESS        存取文件时被拒绝
        ENOMEM         核心内存不足
        ENAMETOOLONG   参数file_name的路径名称太长



    (2)stat结构体


    struct stat {
        dev_t         st_dev;       //文件的设备编号
        ino_t         st_ino;       //节点
        mode_t        st_mode;      //文件的类型和存取的权限
        nlink_t       st_nlink;     //连到该文件的硬连接数目,刚建立的文件值为1
        uid_t         st_uid;       //用户ID
        gid_t         st_gid;       //ID
        dev_t         st_rdev;      //(设备类型)若此文件为设备文件,则为其设备编号
        off_t         st_size;      //文件字节数(文件大小)
        unsigned long st_blksize;   //块大小(文件系统的I/O缓冲区大小)
        unsigned long st_blocks;    //块数
        time_t        st_atime;     //最后一次访问时间
        time_t        st_mtime;     //最后一次修改时间
        time_t        st_ctime;     //最后一次改变时间(指属性)
    };
    先前所描述的st_mode则定义了下列数种情况:
        S_IFMT   0170000    文件类型的位遮罩
        S_IFSOCK 0140000    scoket
        S_IFLNK 0120000     符号连接
        S_IFREG 0100000     一般文件
        S_IFBLK 0060000     区块装置
        S_IFDIR 0040000     目录
        S_IFCHR 0020000     字符装置
        S_IFIFO 0010000     先进先出
        S_ISUID 04000     文件的(set user-id on execution)
        S_ISGID 02000     文件的(set group-id on execution)
        S_ISVTX 01000     文件的sticky
        S_IRUSR(S_IREAD) 00400     文件所有者具可读取权限
        S_IWUSR(S_IWRITE)00200     文件所有者具可写入权限
        S_IXUSR(S_IEXEC) 00100     文件所有者具可执行权限
        S_IRGRP 00040             用户组具可读取权限
        S_IWGRP 00020             用户组具可写入权限
        S_IXGRP 00010             用户组具可执行权限
        S_IROTH 00004             其他用户具可读取权限
        S_IWOTH 00002             其他用户具可写入权限
        S_IXOTH 00001             其他用户具可执行权限
        上述的文件类型在POSIX中定义了检查这些类型的宏定义:
        S_ISLNK (st_mode)    判断是否为符号连接
        S_ISREG (st_mode)    是否为一般文件
        S_ISDIR (st_mode)    是否为目录
        S_ISCHR (st_mode)    是否为字符装置文件
        S_ISBLK (s3e)        是否为先进先出
        S_ISSOCK (st_mode)   是否为socket
        若一目录具有sticky(S_ISVTX),则表示在此目录下的文件只能被该文件所有者、此目录所有者或root来删除或改名。

    使用stat函数最多的可能是ls-l命令,用其可以获得有关一个文件的所有信息。



    (3)其他相关函数



    函数都是获取文件(普通文件,目录,管道,socket,字符,块()的属性。
    函数原型
    #include <sys/stat.h>
    int stat(const char *restrict pathname, struct stat *restrict buf);
    提供文件名字,获取文件对应属性。


    int fstat(int filedes, struct stat *buf);
    通过文件描述符获取文件对应的属性。


    int lstat(const char *restrict pathname, struct stat *restrict buf);
    提供文件名字,获取文件属性。


    主要区别:


     fstat(int fd,struct stat *)接收的已open的文件描述符


    stat(char *filename,struct stat *)接收的路径名, 需要注意的是 能处理符号链接,但处理的是符号链接指向的文件。


    lstat(char *filename,struct stat *)接收的路径名  ,需要注意的是,也能能处理符号链接,但处理的是符号链接本身(自身)文件。 




    #include <stdio.h>
    #include <errno.h>
    #include <string.h>
    #include <dirent.h>
    #include <errno.h>
    #include <sys/stat.h>
    
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <time.h>
    
    #if 1
    typedef struct stat Stat_t;
    #define StatFunc(x,y) stat(x,y)
    #else
    typedef struct stat64 Stat_t;  //部分平台不支持
    #define StatFunc(x,y) stat64(x,y)
    #endif
    
    int func(void)
    {
       char *filename ="binxu.rmvb" ;
       int nRet = 0;
       Stat_t s;
       time_t tTimeTmp = 0;
       struct tm stuTimeTmp;
       memset(&s, 0, sizeof(Stat_t));
       nRet = StatFunc(filename, &s);
       if (nRet)
       {
           printf("stat %s failed! error_code: %s", filename ,strerror(errno));
           return -1;
       }
    
       printf("\n s.st_size=%d,s.st_ctime=%d,s.st_mtime=%d,s.st_atime=%d \n",
              s.st_size,s.st_ctime,s.st_mtime,s.st_atime);
    
       if(s.st_size >0 )
       {
    		 printf("\n size ========%0.3lf KB  %0.3lf M   %0.3lf G ======\n",
              s.st_size/1024.0,s.st_size/1024.0/1024.0,s.st_size/1024.0/1024.0/1024.0);
       }
    
       memset(&stuTimeTmp,0,sizeof(struct tm));
       tTimeTmp = (s.st_ctime);
       //struct tm *gmtime_r(const time_t *timep, struct tm *result);
       (void *)gmtime_r(&tTimeTmp,&stuTimeTmp);
     
    	printf("\n create time** %d-%d-%d  %d:%d:%d **\n",
    		stuTimeTmp.tm_year + 1900,
    		stuTimeTmp.tm_mon + 1,
    		stuTimeTmp.tm_mday,
    		stuTimeTmp.tm_hour,
    		stuTimeTmp.tm_min,
    		stuTimeTmp.tm_sec );
        
       return 0;
    }
      
    int main()  
    {  
        func();
    }
    
    
    
    






    stat获取到的文件属性的时间值是UTC时间。


    在windows下看文件属性,时间+8北京时区刚好。





    (4)利用stat 的属性判断属于是否属于同一挂载目录下的文件夹或者是否是同一设备


    #include <stdio.h>
    #include <errno.h>
    #include <string.h>
    #include <dirent.h>
    #include <errno.h>
    #include <sys/stat.h>
    
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <time.h>
    
    #if 1
    typedef struct stat Stat_t;
    #define StatFunc(x,y) stat(x,y)
    #else
    typedef struct stat64 Stat_t;  //部分平台不支持
    #define StatFunc(x,y) stat64(x,y)
    #endif
    
    int func(char *pchFilename)
    {
       int nRet = 0;
       Stat_t stuStat;
       dev_t mountDevice;
       
       if(NULL == pchFilename || 0 == strlen(pchFilename))
       {
    		return -1;
       }
       
       memset(&stuStat, 0, sizeof(Stat_t));
       nRet = StatFunc(pchFilename, &stuStat);
       if (nRet)
       {
           printf("stat %s failed! error_code: %s", pchFilename ,strerror(errno));
           return -1;
       }
    
    	printf("\n\n**************filepath[%s]***************	",pchFilename);
    
    	printf("\n (stuStat.st_mode & S_IFMT) == S_IFBLK  result is %d  ",(stuStat.st_mode & S_IFMT) == S_IFBLK);
       
       if ((stuStat.st_mode & S_IFMT) == S_IFBLK)
    	{
    	    mountDevice = stuStat.st_rdev; // //(设备类型)若此文件为设备文件,则为其设备编号
    	}
    	else
    	{
    		mountDevice = stuStat.st_dev;     //文件的设备编号
    	}
    
    	printf("\n st_rdev[%llu]  st_dev[%llu] st_ino[%lu]\n", stuStat.st_rdev,stuStat.st_dev,stuStat.st_ino );
    	
       return 0;
    }
      
    int main()  
    {  
        func("/share/111/");
    	func("/share/111/222/");
    	func("/");
    	
    	func("/dev/sda1");
    	func("/dev/sda2");
    	func("/dev/sda5");
    
    }
    
    



    属于设备的,如/dev/sda1,(stuStat.st_mode & S_IFMT) == S_IFBLK条件为真,此时比较是否为同一设备,应该比较st_rdev属性

    属于文件夹的,(stuStat.st_mode & S_IFMT) == S_IFBLK条件为假,判断是否同一个挂载点时,应该比较st_dev属性。



    展开全文
  • 3. 如果你还不知道如何获取目录下的所有文件,请参考笔者的这篇博客:https://blog.csdn.net/yzf279533105/article/details/115356551 效果如下 这个是文件目录图 文件的时间信息如下图 完整代码如下 ...

    简言

    1. golang为我们提供了完善的文件操作库,例如os,ioutil等

    2. windows下,linux下获取文件时间信息的方式不太一样,具体方式请看下面的代码

    3. 如果你还不知道如何获取目录下的所有文件,请参考笔者的这篇博客:https://blog.csdn.net/yzf279533105/article/details/115356551

    效果如下

    这个是文件目录图                    文件的时间信息如下图

        

    完整代码如下

    package main
    import (
    	"fmt"
    	"io/ioutil"
    	"os"
    	"syscall"
    	"time"
    )
    // 递归获取指定目录下的所有文件名
    func GetAllFile(pathname string) ([]string, error) {
    	result := []string{}
    
    	fis, err := ioutil.ReadDir(pathname)
    	if err != nil {
    		fmt.Printf("读取文件目录失败,pathname=%v, err=%v \n",pathname, err)
    		return result, err
    	}
    
    	// 所有文件/文件夹
    	for _, fi := range fis {
    		fullname := pathname + "/" + fi.Name()
    		// 是文件夹则递归进入获取;是文件,则压入数组
    		if fi.IsDir() {
    			temp, err := GetAllFile(fullname)
    			if err != nil {
    				fmt.Printf("读取文件目录失败,fullname=%v, err=%v",fullname, err)
    				return result, err
    			}
    			result = append(result, temp...)
    		} else {
    			result = append(result, fullname)
    		}
    	}
    
    	return result, nil
    }
    
    // 把秒级的时间戳转为time格式
    func SecondToTime(sec int64) time.Time {
    	return time.Unix(sec, 0)
    }
    
    func main() {
    
    	// 递归获取目录下的所有文件
    	var files []string
    	files, _ = GetAllFile("E:/test/go/get_all_files")
    
    	fmt.Println("目录下的所有文件如下")
    	for i:=0;i<len(files);i++ {
    		fmt.Println("文件名:",files[i])
    
    		// 获取文件原来的访问时间,修改时间
    		finfo, _ := os.Stat(files[i])
    
    		// linux环境下代码如下
    		//linuxFileAttr := finfo.Sys().(*syscall.Stat_t)
    		//fmt.Println("文件创建时间", SecondToTime(linuxFileAttr.Ctim.Sec))
    		//fmt.Println("最后访问时间", SecondToTime(linuxFileAttr.Atim.Sec))
    		//fmt.Println("最后修改时间", SecondToTime(linuxFileAttr.Mtim.Sec))
    
    		// windows下代码如下
    		winFileAttr := finfo.Sys().(*syscall.Win32FileAttributeData)
    		fmt.Println("文件创建时间:",SecondToTime(winFileAttr.CreationTime.Nanoseconds()/1e9))
    		fmt.Println("最后访问时间:",SecondToTime(winFileAttr.LastAccessTime.Nanoseconds()/1e9))
    		fmt.Println("最后修改时间:",SecondToTime(winFileAttr.LastWriteTime.Nanoseconds()/1e9))
    	}
    }

     

    展开全文
  • 想要获取某个目录下以sess_开头的所有文件 , 如果是linux下可以直接sess* , go标准库中也有同样的函数可以实现 ...要对winows和linux分开处理 , windows下获取文件的创建时间 func GetFileCreateT...

    想要获取某个目录下以sess_开头的所有文件 , 如果是linux下可以直接sess*  , go标准库中也有同样的函数可以实现

    files,_:=filepath.Glob("/sess_*")

    files就是全部的文件列表 , 直接for range循环就可以了

     

    要对winows和linux分开处理 , windows下获取文件的创建时间

    func GetFileCreateTime(path string) int64{
        osType := runtime.GOOS
        fileInfo, _ := os.Stat(path)
        if osType == "windows" {
            wFileSys := fileInfo.Sys().(*syscall.Win32FileAttributeData)
            tNanSeconds := wFileSys.CreationTime.Nanoseconds()  /// 返回的是纳秒
            tSec := tNanSeconds/1e9                             ///秒
            return tSec;
        }
        return time.Now().Unix()
    }
    

    linux下获取文件的创建时间

    func GetFileCreateTime(path string) int64{
        osType := runtime.GOOS
        fileInfo, _ := os.Stat(path)
        if osType == "linux" {
            stat_t := fileInfo.Sys().(*syscall.Stat_t)
            tCreate := int64(stat_t.Ctim.Sec)
            return tCreate
        }
        return time.Now().Unix()
    }
    

    当在window下编译运行的时候 , linux部分代码会报错 , 需要把这个文件单独拿出来变成比如  test_linux.go , 这样windows下不会报错

    还有一种方式是在文件开头加上注释  , 这样也表示在windows下不会被编译

    //+build !windows

     

    后台任务获取指定文件创建时间并且删除掉超过30分钟的文件完整代码是:

    //+build !linux
    
    package controller
    
    import (
        "github.com/taoshihan1991/imaptool/config"
        "os"
        "path/filepath"
        "runtime"
        "syscall"
        "time"
    )
    var osType = runtime.GOOS
    const expireTime=30*60
    //检测权限文件是否过期,超过30分钟删除掉
    func TimerSessFile(){
        go func() {
            for {
                time.Sleep(time.Second*10)
                files,_:=filepath.Glob(config.Dir+"sess_*")
                for _,file:=range files{
                    fileInfo, _ := os.Stat(file)
                    var createTime int64
                    now:=time.Now().Unix()
                    if osType == "windows" {
                        wFileSys := fileInfo.Sys().(*syscall.Win32FileAttributeData)
                        tNanSeconds := wFileSys.CreationTime.Nanoseconds()  /// 返回的是纳秒
                        createTime = tNanSeconds/1e9                             ///
                    }
                    diffTime:=now-createTime
                    if diffTime>expireTime{
                        os.Remove(file)
                    }
                }
            }
        }()
    }

     

      

    展开全文
  • 在给定的路径下建立2级目录,第一个目录是输入字符串的ID号,第二级目标是系统时间 #include #include #include #include #include #include #include int main() { //获取当前时间的函数  ...

    在给定的路径下建立2级目录,第一个目录是输入字符串的ID号,第二级目标是系统时间

    #include <sys/stat.h>
    #include <sys/types.h>
    #include<stdio.h>
    #include<time.h>
    #include <iostream>
    #include <string.h>
    #include <sstream>


    int main()

    {

    //获取当前时间的函数
       
        time_t nowtime;
       
         struct tm *timeinfo;
     
           time(&nowtime);
     
          timeinfo=localtime(&nowtime);
        
       
         int year,month,day,hour,min,sec;
     
          year=timeinfo->tm_year+1900;
     
          month=timeinfo->tm_mon+1;
     
          day=timeinfo->tm_mday;
       
         hour=timeinfo->tm_hour;
       
         min=timeinfo->tm_min;
     
          sec=timeinfo->tm_sec;
        
       
         char label1[10],label2[10];
     
          memset(label1,0,sizeof(label1));
     
          memset(label2,0,sizeof(label2));
       
     
         sprintf(label1,"%4d%02d%02d",year,month,day);
       
       sprintf(label2,"%02d%02d%02d",hour,min,sec);
        
       
        cout<<label1<<endl;
     
         cout<<label2<<endl;

    string inputName;
        inputName="rtsp://11.85.188.24:554/RTStream/cam16499_url2_copy.sdp";
       
         string label,ID,camID;
     
          label=strrchr(inputName.c_str(),'/');    //也就是从字符串的右侧开始查找特定字符首次出现的位置,并返回从字符串中的这个位置起,一直到字符串结束的所有字符
     
          cout<<label<<endl;      /*    /cam16499_url2_copy.sdp    */
       
        int split=label.find('_');
           

             if (split>0)
            {
                   ID=label.substr(0,split);   //返回一个从指定位置开始的指定长度的字符串
            }
             cout<<ID<<endl;      /*    /cam16499    */
        
            camID=ID.substr(4,(strlen(ID.c_str())-4));
            cout<<camID<<endl;             /*    16499     */

            char out_im[100];
            sprintf(out_im,"%s%s","/home/cstor/Image/",camID.c_str());
            cout<<out_im<<endl;
            mkdir(out_im,0777);
        
            char outna[100];
            sprintf(outna,"%s%c%s",out_im,'/',label1);
            cout<<outna<<endl;
            mkdir(outna,0777);

    }


    展开全文
  • 1 函数都是获取文件(普通文件,目录,管道,socket,字符,块()的属性。 函数原型 #include int stat(const char *restrict pathname, struct stat *restrictbuf); 提供文件名字,获取文件对应属性。 int...
  • Linux+Shell获取及拷贝最新数据到远程设备我们远程一般拷贝数据都是创建了共享秘钥,这样拷贝的话就不用输入密码了,具体可以参考我前面的文章”Linux 下实现SSH互信--...我们将通过脚本获取LOCALBAKDIR目录下的文件的...
  • 采用的方法是,以文件创建时间命名文件,备份文件时,使用readdir()方法获取备份目录下的文件名,判断最后一个文件(最新的文件)是否达到10M大小。 查看备份文件,第一个备份文件没有问题;之后的备份文件大部分都...
  • Linux文件三个时间的查看...在Linux中,基本上无法知道一个文件的精确创建时间,更改时间是指文件或目录的属性(所有者,权限等等)被修改的时间。如果一个文件需要备份的话,dump命令需要用到ctime,你可以用ls-lc命令
  • 获取、改变、创建、删除当前目录2.打开目录流、读取目录流、关闭目录流3.读取文件的类型,大小, 最近访问时间等4.综合练习:实现 tree 命令二.文件操作1.打开关闭文件2.读取,写入文件3. 改变文件大小4.文件定位 与 ...
  • Linux操作命令

    2019-12-15 19:59:33
    Touch 文件名 目录中不存在文件用来创建一个新的文件,如果存在可更改这个文件或目录的日期时间,包括存取时间和更改时间; Mkdir 文件名 创建一个新的文件 Echo 数据 >> 文件名 用来向文件中写入数据 >>...
  • [mysql]MySQL定时备份(linux

    千次阅读 2017-01-12 17:43:19
    这里以ubuntu14.04为测试平台;...rq那里主要是shell指令获取时间,用来命名备份的sql文件而已;授权限: 3)sudo vim /etc/crontab文件,添加定时运行脚本backmysql 最后一条添加 17:22分以root用户执行/hom
  • Linux 命令行小技巧

    千次阅读 2019-03-28 14:40:20
    概述 命令行小技巧 history命令来查看曾经运行过的命令 history中显示命令的执行时间 清除history ...获取吃掉你磁盘空间的最大的5个文件 ...获取一个文件的详细状态信息...用一个命令创建目录树 假设你要创建一个类...
  • 文章目录LinuxLinux概述Linux含义操作系统虚拟机软件ubuntuLinux内核与发行版Linux基础操作终端命令格式命令帮助查看目录切换目录路径创建删除文件目录复制移动文件目录设置命令别名磁盘内存日期时间Linux进阶操作...
  • linux命令

    2018-08-24 11:19:31
    who am i 显示当前的登录用户名 终端名 登录时间(w 显示当前...hostname 获取主机名 mkdir -pv 创建(递归返回结果) cp src dst 被复制文件路径 新文件或被覆盖文件路径 chown :修改文件的属主(也可以改组)e.g...
  • # 检查是否安装有ssh $ ssh -V 文件目录管理命令 1、tree 以树状图列出目录内容 yum install -y tree tree 2、ls 显示工作目录下内容...-t 将文件按创建时间正序列出 -R 递归遍历目录下文件 3、pwd 获取当前工作目录
  • LINUX 应用编程函数自学手册 gedit file.txt 目录 第1类 时间编程类... 5 1.1 获取日历时间... 5 1.2 获取格林威治时间... 5 1.3 获取本地时间... 6 1.4 以字符串方式显示时间... 6 1.5 获取高...
  • Linux命令笔记

    2019-03-14 09:16:58
    9:mkdir 创建目录 语法:mkdir -p 目录 10:cd 切换目录 语法:cd 目录 11:pwd 显示当前目录的绝对路径 语法:pwd 12:rmdir 删除空目录 语法:rmdir 目录名字 13:rm 删除文件或目录 语法:rm -rf[文件或目录] 14:...
  • linux及其附属操作

    2021-04-28 21:29:06
    文章目录linux操作查看当前的绝对路径查看当前文件夹下的文件返回上一/两个目录删除重命名,移动,拷贝创建文件及文件夹压缩包处理输入命令查看当前目录下有多少个非文件夹的文件使用管理员权限清屏退出当前命令查找...
  • 时间运行稳定的操作系统,当成服务器(web、db、app)。有C编译环境,有一些软件(Redis、nginx)没有软件包,需要在Linux编译获得软件包。 常用命令 pwd:获取当前路径 cd:跳转到目录 su-u:切换到管理员 ls或ll...
  • Linux 高级命令

    2021-03-12 19:56:03
    一、find命令(1)find命令作用(2)基本语法(3)*星号通配符4、根据文件修改时间搜索文件☆ Windows中的文件时间☆ 使用stat命令获取文件时间创建文件时设置修改时间以及修改文件的修改时间☆ 根据文件的==最后...
  • linux大作业报告

    2018-04-11 23:25:15
    3、设计shell脚本程序,要求用户对/home目录下的文件进行备份,压缩为Linux系统中常用的tar.gz格式。 4、设计shell脚本程序,假设用户建立了目录A和目录B,目录中不包含子目录,要求用户编写一个脚本程序,比较两个...
  • Linux进程初识

    2021-03-02 10:21:55
    文章目录1.进程是什么2.描述进程-PCB2.1为什么要描述进程2.2PCB和task_struct2.3task_struct内容分类3.查看进程4.通过系统调用获取进程标识符5.通过系统调用创建进程——fork5.1fork初识5.2进一步了解fork 1.进程是...
  • linux mysql 备份脚本

    2021-05-14 17:52:22
    备份脚本: db_back.sh # 备份路径(自己先创建) ...echo "获取当前时间:" name=$dbname"-"$(date -d today +"%Y-%m-%d-%H-%M-%S") echo $name echo "===开始备份===" # 执行备份 mysqldump --opt -uroot --p...
  • 文章目录文件系统目录与文件获取文件属性文件访问权限umask文件权限的更改与管理粘住位文件系统的实质硬链接 符号连接文件读写时间目录创建和销毁更改当前工作路径分析目录/读取目录内容系统数据文件和信息时间戳...
  • 项目中遇到定时清理数据库数据的需求,通过linux创建定时任务,定时任务执行的shell脚本中调用sql脚本来实现 一、shell脚本 #!/bin/bash # 获取当前时间 DATE=$(date "+%Y%m%d%H%M%S") # 登陆数据库
  • linux.chm文档

    2015-07-07 06:37:39
    ln -s file1 lnk1 创建一个指向文件或目录的软链接 ln file1 lnk1 创建一个指向文件或目录的物理链接 touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) file file1 outputs the mime type ...
  • Linux常用命令(硬核)

    2019-08-21 16:16:01
    其中参数和目标不是必须的,例如:date命令可以直接获取到当前的日期时间 文章目录1.获得帮助命令whstishelpman2.修改主机名3.常用快捷键4.历史调用5.路径操作6.文件操作6.1创建编辑文件6.2查看文件内容6.2.1 查看文件...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 260
精华内容 104
关键字:

linux获取目录创建时间

linux 订阅