精华内容
下载资源
问答
  • linux获取文件大小的函数fstat()

    万次阅读 2017-03-03 09:11:27
    C语言fstat()函数:由文件描述词取得文件状态 头文件:#include #include 定义函数:int fstat(int fildes, struct stat *buf); 函数说明:fstat()用来将参数fildes 所指的文件状态, 复制到参数buf ...

    C语言fstat()函数:由文件描述词取得文件状态



    头文件:#include <sys/stat.h>   #include <unistd.h>


    定义函数:int fstat(int fildes, struct stat *buf);


    函数说明:fstat()用来将参数fildes 所指的文件状态, 复制到参数buf 所指的结构中(struct stat). 
    fstat()与stat()作用完全相同, 不同处在于fstat()传入的参数为已打开的文件描述词. 详细内容请参考stat().


    返回值:执行成功则返回0, 失败返回-1, 错误代码存于errno.


    范例
    #include <sys/stat.h>
    #include <unistd.h>
    #include <fcntk.h>
    main()
    {
       struct stat buf;
       int fd;
       fd = open("/etc/passwd", O_RDONLY);
       fstat(fd, &buf);
       printf("/etc/passwd file size +%d\n ", buf.st_size);
    }
    执行:
    /etc/passwd file size = 705






    C语言stat()函数:获取文件状态


    头文件:#include <sys/stat.h>   #include <unistd.h>


    定义函数:int stat(const char * file_name, struct stat *buf);


    函数说明:stat()用来将参数file_name 所指的文件状态, 复制到参数buf 所指的结构中。


    下面是struct stat 内各参数的说明:
    struct stat
    {
        dev_t st_dev; //device 文件的设备编号
        ino_t st_ino; //inode 文件的i-node
        mode_t st_mode; //protection 文件的类型和存取的权限
        nlink_t st_nlink; //number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.
        uid_t st_uid; //user ID of owner 文件所有者的用户识别码
        gid_t st_gid; //group ID of owner 文件所有者的组识别码
        dev_t st_rdev; //device type 若此文件为装置设备文件, 则为其设备编号
        off_t st_size; //total size, in bytes 文件大小, 以字节计算
        unsigned long st_blksize; //blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.
        unsigned long st_blocks; //number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节.
        time_t st_atime; //time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、utime、read、write 与tructate 时改变.
        time_t st_mtime; //time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、utime 和write 时才会改变
        time_t st_ctime; //time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、权限被更改时更新
    };


    先前所描述的st_mode 则定义了下列数种情况:
    1、S_IFMT 0170000 文件类型的位遮罩
    2、S_IFSOCK 0140000 scoket
    3、S_IFLNK 0120000 符号连接
    4、S_IFREG 0100000 一般文件
    5、S_IFBLK 0060000 区块装置
    6、S_IFDIR 0040000 目录
    7、S_IFCHR 0020000 字符装置
    8、S_IFIFO 0010000 先进先出
    9、S_ISUID 04000 文件的 (set user-id on execution)位
    10、S_ISGID 02000 文件的 (set group-id on execution)位
    11、S_ISVTX 01000 文件的sticky 位
    12、S_IRUSR (S_IREAD) 00400 文件所有者具可读取权限
    13、S_IWUSR (S_IWRITE)00200 文件所有者具可写入权限
    14、S_IXUSR (S_IEXEC) 00100 文件所有者具可执行权限
    15、S_IRGRP 00040 用户组具可读取权限
    16、S_IWGRP 00020 用户组具可写入权限
    17、S_IXGRP 00010 用户组具可执行权限
    18、S_IROTH 00004 其他用户具可读取权限
    19、S_IWOTH 00002 其他用户具可写入权限
    20、S_IXOTH 00001 其他用户具可执行权限上述的文件类型在 POSIX 中定义了检查这些类型的宏定义
    21、S_ISLNK (st_mode) 判断是否为符号连接
    22、S_ISREG (st_mode) 是否为一般文件
    23、S_ISDIR (st_mode) 是否为目录
    24、S_ISCHR (st_mode) 是否为字符装置文件
    25、S_ISBLK (s3e) 是否为先进先出
    26、S_ISSOCK (st_mode) 是否为socket 若一目录具有sticky 位 (S_ISVTX), 则表示在此目录下的文件只能被该文件所有者、此目录所有者或root 来删除或改名.


    返回值:执行成功则返回0,失败返回-1,错误代码存于errno。


    错误代码:
    1、ENOENT 参数file_name 指定的文件不存在
    2、ENOTDIR 路径中的目录存在但却非真正的目录
    3、ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接
    4、EFAULT 参数buf 为无效指针, 指向无法存在的内存空间
    5、EACCESS 存取文件时被拒绝
    6、ENOMEM 核心内存不足
    7、ENAMETOOLONG 参数file_name 的路径名称太长


    范例
    #include <sys/stat.h>
    #include <unistd.h>
    main()
    {
        struct stat buf;
        stat("/etc/passwd", &buf);
        printf("/etc/passwd file size = %d \n", buf.st_size);
    }


    执行:

    /etc/passwd file size = 705


    使用lseek函数

    lseek(fd,0L,SEEK_END)

    表头文件
    #include<sys/types.h>
    #include<unistd.h>


    定义函数
    off_t lseek(int filde,off_t offset ,int whence);


    EEK_SET 将读写位置指向文件头后再增加offset个位移量。
    SEEK_CUR 以目前的读写位置往后增加offset个位移量。
    SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
    当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。
    下列是较特别的使用方式:
    1) 欲将读写位置移到文件开头时:
    lseek(int fildes,0,SEEK_SET);
    2) 欲将读写位置移到文件尾时:
    lseek(int fildes,0,SEEK_END);
    3) 想要取得目前文件位置时:
    lseek(int fildes,0,SEEK_CUR);

    返回值
    当调用成功时则返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno 会存放错误代码。
    可能设置erron的错误代码:
    EBADF: fildes不是一个打开的文件描述符。
    ESPIPE:文件描述符被分配到一个管道、套接字或FIFO。
    EINVAL:whence取值不当。


    展开全文
  • Linux 查看文件指定行数 内容

    千次阅读 2019-07-03 10:01:15
    1、tail date.log 输出文件末尾的内容...tail 和 head 加上 -n参数后 都代表输出到指定行数,tail 是指定行数到结尾,head是开头指定行数 +数字 代表整数第几行, -数字代表倒数第几行。   转自: ...

    1、tail date.log               输出文件末尾的内容,默认10行

         tail -20  date.log        输出最后20行的内容

         tail -n -20  date.log    输出倒数第20行到文件末尾的内容

         tail -n +20  date.log   输出第20行到文件末尾的内容

         tail -f date.log            实时监控文件内容增加,默认10行。

    2、head date.log           输出文件开头的内容,默认10行

         head -15  date.log     输出开头15行的内容

         head -n +15 date.log 输出开头到第15行的内容

         head -n -15 date.log  输出开头到倒数第15行的内容

    3、sed -n "开始行,结束行p" 文件名    

          sed -n '70,75p' date.log             输出第70行到第75行的内容

          sed -n '6p;260,400p; ' 文件名    输出第6行 和 260到400行

          sed -n 5p 文件名                       输出第5行

    tail 和 head 加上 -n参数后 都代表输出到指定行数,tail 是指定行数到结尾,head是开头到指定行数

    +数字 代表整数第几行, -数字代表倒数第几行。

     

    转自:https://www.cnblogs.com/zeke-python-road/p/9455048.html

    展开全文
  • Linux获取文件大小方法汇总

    万次阅读 2013-06-18 15:58:11
    Linux获取文件大小汇总 最近纠结一个问题,Linux下如何获取文件的大小,查了一下,方法汇总如下: 1.利用fseek和ftell 2.利用fstat和fileno 下面我们就详细说一下介绍一下。 1.利用fseek和ftell获取...

    Linux获取文件大小汇总

    最近纠结一个问题,Linux下如何获取文件的大小,查了一下,方法汇总如下:
    1.利用fseek和ftell
    2.利用fstat和fileno
    下面我们就详细说一下介绍一下。

    1.利用fseek和ftell获取文件的大小

    1.1fseek、ftell介绍

    int fseek(FILE *stream, long offset, int whence);
    功能:该函数是将文件指针移到指定的位置。
    参数:stream表示用fopen打开的文件HANDLE(入参)
                offset表示文件指针的偏移位置(入参)
                whence表示从何处偏移(入参)。whence有三种选项,分别代表:
                                                                              SEEK_SET:从文件开头偏移offset个byte;
                                                                              SEEK_CUR:从文件当前位置偏移offset个byte;
                                                                              SEEK_END:从文件末尾偏移offset个byte;
    返回值:成功为0,失败为-1;

    long ftell(FILE *stream);
    功能:获取文件指针从文件开始到当前位置的偏移量。
    参数:stream表示用fopen打开的文件HANDLE(入参)
    返回值:成功就返回偏移量;失败为-1.

    1.2如何获取文件大小?

    主要思路是这样的:首先利用fseek将文件指针指向文件末尾,然后利用ftell获取文件的当前位置。

    1.3测试程序

    #include <stdio.h>   // FILE...
    
    // get the file size.
    long getfilesize(FILE *pFile)
    {
            // check FILE*.
            if( pFile == NULL)
            {
                    return -1;
            }
    
            // get current file pointer offset.
            long cur_pos = ftell(pFile);
            if(cur_pos == -1)
            {
                    return -1;
            }
    
            // fseek to the position of file end.
            if(fseek(pFile, 0L, SEEK_END) == -1)
            {
                    return -1;
            }
    
            // get file size.
            long size = ftell(pFile);
    
            // fseek back to previous pos.
            if(fseek(pFile, cur_pos, SEEK_SET) == -1)
            {
                    return -1;
            }
    
            // deal returns.
            return size;
    }
    int main()
    {
            // open a file.
            FILE *pFile = fopen("./Test.txt", "a");
            if(pFile == NULL)
            {
                    printf("error.\n");
                    return 0;
            }
    
            // get the file size.
            printf("the file size: %ld\n", getfilesize(pFile));
    
            // close the file.
            fclose(pFile);
    
            return 0;
    }

    2.利用fstat和fileno

    2.1fileno和fstat介绍

    int fileno(FILE *stream);
    功能:将stream转化为整数描述符。
    参数:stream表示用fopen打开的文件HANDLE(入参)
    返回值:成功返回stream的整数描述符;失败返回-1.

    int fstat(int filedes, struct stat *buf);
    功能:通过文件描述符filedes获取该文件信息
    参数:filedes表示文件描述符(入参)
                buf表示文件信息结构的指针(出参)。struct stat的具体信息可以查看(http://www.cnitblog.com/guopingleee/archive/2008/11/13/51411.aspx)
    返回值:成功返回0;失败返回-1.

    2.2如何获取文件大小?

    首先利用fileno将“FILE *”型的HANDLE转化为文件的整数描述符,然后获取文件的信息(其中包含文件大小)。

    2.3测试程序

    #include <sys/stat.h>// stat
    #include <stdio.h>   // FILE...
    
    // get the file size.
    off_t getfilesize(FILE *pFile)
    {
            // check FILE*.
            if( pFile == NULL)
            {
                    return -1;
            }
    
            // get file size.
            int fd=fileno((FILE *)pFile);
            if(fd == -1)
            {
                    return -1;
            }
            struct stat fileStat;
            if( -1 == fstat(fd, &fileStat))
            {
                    return -1;
            }
    
            // deal returns.
            return fileStat.st_size;
    }
    int main()
    {
            // open a file.
            FILE *pFile = fopen("./Test.txt", "a");
            if(pFile == NULL)
            {
                    printf("error.\n");
                    return 0;
            }
    
            // get the file size.
            printf("the file size: %ld\n", getfilesize(pFile));
    
            // close the file.
            fclose(pFile);
    
            return 0;
    }
    

    后记:
    获取文件大小的方法还有很多,本文主要是从fopen得到的文件句柄出发,汇总一下方法。
    展开全文
  • Linux C获取文件长度和全部内容

    千次阅读 2018-03-28 15:57:42
    FILE*fp; fp=fopen("localfile","rb");// localfile文件名 fseek(fp,0L,SEEK_END); /* 定位到文件末尾 */ flen=ftell(fp);... /* 根据文件大小动态分配内存空间 */ if(...
    1. FILE*fp;  
    2.        fp=fopen("localfile","rb");// localfile文件名         
    3.   
    4.   
    5.       fseek(fp,0L,SEEK_END); /* 定位到文件末尾 */  
    6.  flen=ftell(fp); /* 得到文件大小 */  
    7.  p=(char *)malloc(flen+1); /* 根据文件大小动态分配内存空间 */  
    8.  if(p==NULL)  
    9.  {  
    10.  fclose(fp);  
    11.  return 0;  
    12.  }  
    13.  fseek(fp,0L,SEEK_SET); /* 定位到文件开头 */  
    14.  fread(p,flen,1,fp); /* 一次性读取全部文件内容 */  
    15.   
    16.  p[flen]=0; /* 字符串结束标志 */   
    展开全文
  • Linux查找指定一天的文件及统计

    千次阅读 2017-10-14 14:08:15
    例如:查找当前目录为2017年10月13日的包含LH开头文件并统计 find . -name "LH*" -newermt '2017-10-13' ! -newermt '2017-10-14' |wc -l
  • 每次需要开机检查系统的升级固件版本和当前的SD卡中的固件版本是否一致,固件名的开始是固定的字符串加上版本号。 #include &lt;dirent.h&gt; #include &... static void *update_firmware(void *arg) ...
  • 文件最后100行:tail -...文件开头100行:head -n100 filePath; 文件指定开始行和结束行的内容:sed '1,100p' filePath; 文件有多少行:wc -l 文件名; 转载于:https://www.cnblogs.com/lyFocus/p/6122051.html...
  • 列出指定路径path下的文件夹名称 #方法一: CUR_PATH=${0%/*} #指当前目录 path=$CUR_PATH/inc for dir in $(ls $path) ...列出指定路径path下的文件及文件夹名称 for file in `ls $path` do echo $path"/"$fi...
  • 获取文件状态的系统调用有三个,分别是stat,fstat和lstat,其实他们的作用是一样的,都是查询某个文件的状态。如果查询成功,会把文件状态的信息填充在一个stat结构体中。他们的函数定义分别如下: int stat(const...
  • 56740在log文件里显示的是从36列到40列(每个字符和空格都算一列)我以为这样可以输出36列到40列,也就是我想要的5开头的数字, ``` [tyy@root] grep -i "run_" real.log | awk '{print $36, $40}' ``` 但其实...
  • 请注意,如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证 该文件的内容无法还原,请考虑使用 shred。 2. 删除包含其它特殊字符的文件 对于含有其它特殊字符的文件名,如<>!*等,可用 ...
  • linux C: lseek 获取文件长度

    千次阅读 2013-05-27 10:51:39
    转载: ... 简介 函数名: lseek 功 能: 移动文件读/写指针 ...头文件:#include #include ...用 法: off_t lseek(int handle, off_t offset, int fromwhere);...所有打开的文件都有一个当前文件偏移量(current file off
  • #从当前目录下找出所有要查询的文件并输出文件位置 echo start time=`date` echo -e function func() { for file in `ls $2` do if [ -L $2"/""$file" ] then continue else if [ -d $2"/""$file" ] then...
  • Linux文件系统目录结构详解

    万次阅读 2017-10-08 13:09:34
    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux...
  • Linux下统计特定开头文件夹的个数

    千次阅读 2019-06-24 20:39:22
    例如查找某目录下以main开头的文件夹个数 find -type d -name "main*" |wc -l 排除特定开头文件夹后的个数,例如...查找指定目录文件夹的个数 find /path -type d |wc -l 同样可以实现统计特定文件的个数 find -typ...
  • 在Unix/Linux系统中,要获取一个指定目录下所有的文件或文件夹,一般用dirent.h(POSIX标准定义的目录操作头文件)。 一、数据类型 在头文件中定义了两种主要的数据类型。 DIR:代表一个目录流的结构。 1 2 ...
  • Linux下C语言获取目录中的文件列表

    千次阅读 2013-10-09 16:50:25
    转自:http://nayan115.blog.sohu.com/231443440.html 代码如下:Linux下使用GCC 编译即可 #include #include #include #include int main(){  DIR *dir;  struct dirent *ptr;    dir
  • 【ARM】制作Linux 文件系统

    千次阅读 2017-06-06 21:03:03
    1文件系统在LINUX 中的结构图 2编译好kernel 3Uboot 状态下显示的环境设置信息 4开始busybox 生成文件系统 5完善文件系统 第一步 init 会调用etcinittab 文件并根据其做相应的操作 第二步可以手工做些设置 第...
  • Linux获取时间日期方法

    万次阅读 2010-08-26 17:48:00
    <br />linux中用shell获取昨天、明天或多天前的日期: 在Linux中对man date -d 参数说的比较模糊,以下举例进一步说明: # -d, --date=STRING display time described by STRING, not `now’ ...
  • 近日,由于工作要求,研究了一下如何在linux系统下对某个指定的单个进程进行监测,分析其CPU及物理内存的使用情况,并基于c语言写了一个独立的模块,完整的实现上述功能。现将整个模块的代码贴上,以便日后借鉴,并...
  • linux 获取磁盘空间大小

    千次阅读 2017-03-22 09:42:16
    1.查看文件大小  查看当前文件夹下所有文件大小(包括子文件夹)  du -sh   # du -h 15M ./package 16K ./.fontconfig ...查看指定文件夹下所有文件大小(包括子文件夹) # du -h ftp
  • Linux查看文件内容与处理文件

    千次阅读 2018-12-31 18:03:40
    一、查看文件内容 1、查看文件类型 file命令: 能够探测文件的内部,并决定文件是什么类型的。 用法:file [path]my_file my_file如果是目录,file命令会显示 "my_file : directory"。如果是文本文件,...
  • Linux编程——文件操作

    千次阅读 2015-11-13 19:47:57
    文件Linux系统中是一个广泛的概念,Linux将所有的硬件设备当作文件来处理,因此了解文件操作是十分重要的。 (一)文件和目录操作 1.stat 获取文件属性  #include  #include  #include  int stat...
  • 一、使用背景 鉴于业务需求,需要编写一个脚本文件,用于不间断的获取一些信息。这里用shell脚本是最方面的,循环执行我们的请求方法即可。二、shell脚本编写过程(1)创建 test.sh文件//使用touch命令创建文件 ...
  • Linux文件

    万次阅读 2013-12-05 19:55:06
    翻阅参考资料,你会发现文件锁可以进行很多的分类,最常见的主要有读锁与写锁,前者也叫共享锁,后者也叫排斥锁,值得注意的是,多个读锁之间是不会相互干扰的,多个进程可以在同一时刻对同一个文件加读锁;...
  • 查找当前目录下文件大小大于1M的文件:find ./ -type f -size +1M ./当前路径 -type 文件类型 -size 文件大小 +大于 -小于 无 等于 查看当前路径:pwd 1. find(查找命令) find的使用格式如下:  $ find &...
  • Linux rm:删除文件时,排除特定文件

    万次阅读 2017-05-03 19:54:08
    删除文件时排除特定文件 删除当前目录下所有 *.txt文件,除了test.txt rm `ls *.txt|egrep -v test.txt` 或者 rm `ls *.txt|awk '{if($0 != "test.txt") print $0}'` 排除多个文件 rm `ls *.txt|egrep -v '(test....
  • Linux常用文件操作命令

    千次阅读 2020-04-24 23:16:27
    Linux常用命令 1.查看文件目录 命令 说明 ...列出当前目录下的显式文件和目录,...列出当前目录下的所有内容,包括以“.”开头的隐藏文件和目录 ll 以详情模式列出当前目录下的所有文件和目录,包括隐藏文件和...
  • 一、linux目录结构 ...一种不同是体现在目录与存储介质(磁盘,内存,DVD等)的关系上,以往的windows一直是以存储介质为主的,主要以盘符(C盘,D盘...)及分区的来实现文件管理,然后之下才是目录,目录就显得

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,586
精华内容 29,434
关键字:

linux获取指定开头的文件

linux 订阅