
linux文件操作
文章平均质量分 71
A疯的码农
CPIC
展开
-
获取文件的user, group, others访问权限
描述:文件的访问权限分为:用户读,用户写,用户执行;组用户读,组用户写,组用户执行;其他用户读,其他用户写,其他用户执行。通过访问struct stat结构体中的st_mode成员,可以获取到文件的访问权限。要求:输入文件名,分别打印该文件的user、group及others的访问权限。知识点:获取文件的属性int stat(const char *restrict pathnam原创 2014-06-14 14:33:02 · 1102 阅读 · 0 评论 -
列出指定目录下在过去一小时内被修改的文件
要求:可在子任务9的基础上完成,输出该路径下所有当前时刻起前一小时内被修改的文件及其对应的最后被修改时间。知识点:使用time函数获得当前的时间:time_t time(time_t *t)#include此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。原创 2014-06-14 18:15:18 · 1664 阅读 · 4 评论 -
列出指定目录下所有可被其他用户执行的文件
知识点: stat中的st_mode中包含了文件的访问权限位,共有9个:S_IRUSR: 用户读 S_IWUSR: 用户写 S_IXUSR: 用户执行S_IRGRP: 组成员读S_IWGRP: 组成员写S_IXGRP: 组成员执行S_IROTH: 其他用户读S_IWOTH: 其他用户写S_IXOTH: 其他用户执行使用st_mode & S_IXOTH 可以获得文件的其原创 2014-06-14 18:19:52 · 604 阅读 · 0 评论 -
在指定目录下删除一个空目录
要求:给出指定目录和要删除的子目录名做输入参数,打印信息表明是否删除成功。判断要删除的目录是否存在于指定目录下,如果存在,则再判断该目录是否为空。知识点:删除目录函数:int rmdir(const char *pathname)#include原创 2014-06-14 18:35:18 · 980 阅读 · 0 评论 -
删除指定目录下的某个普通文件
描述:先判断指定目录下是否存在该文件,如果不存在,则返回错误。如果存在,那么调用unlink函数或remove函数来删除。 要求:将文件的绝对路径和文件名做输入参数,打印信息表明是否删除成功。 知识点:int unlink(const char * pathname)#include int remove(const char * pathname)#include原创 2014-06-14 18:40:17 · 553 阅读 · 0 评论 -
列出指定目录下后缀是.mp3的所有文件
知识点:使用opendir和readdir函数来获得指定目录下文件的文件名称。代码:原创 2014-06-14 18:43:44 · 970 阅读 · 0 评论 -
列出指定目录下与正则表达式”*.sh”匹配的所有文件
#include#include#include#include#include#include#include#define MAX 1024int dir_run(char *path,char *str){ DIR *dir; struct stat st; struct dirent *entry,*en; c原创 2014-06-14 18:46:56 · 1201 阅读 · 0 评论 -
列出指定目录下与正则表达式”abc*”匹配的所有文件
#include#include#include#include#include#include#include#define MAX 1024int dir_run(char *path,char *str){ DIR *dir; struct stat st; struct dirent *entry,*en;原创 2014-06-14 18:49:50 · 1771 阅读 · 0 评论 -
文件创建
描述:创建一个新的文件。要求:输入要创建的文件名,输出是否创建成功信息。知识点:FILE *fopen(const char *path, const char *mode) ,注意打开方式mode的选择。如果打开文件成功,则fopen函数返回一个指向FILE结构体的指针,否则返回NULL。调用结束后注意关闭文件:int fclose(FILE* stream)注意:fopen()与fcl原创 2014-06-14 15:01:43 · 560 阅读 · 0 评论 -
判断文件是否是目录文件
描述:给出一个文件的绝对路径,判断该文件是否是目录文件要求:将文件的绝对路径做输入参数,打印信息表明该文件是否为目录 知识点:获取文件的属性int stat(const char *restrict pathname, struct stat *restrict buf) #include #include原创 2014-06-14 15:23:35 · 912 阅读 · 0 评论 -
列出指定目录下所有文件名
要求:绝对路径名做输入参数,打印输出该路径下所有文件名 知识点:打开目录函数:DIR* opendir (const char * path )读取目录函数:struct dirent *readdir(DIR *dir)返回下一个目录项的指针。#include #include原创 2014-06-14 15:27:46 · 1086 阅读 · 0 评论 -
列出指定目录下的所有文件的绝对路径
要求:指定目录路径做输入参数,打印输出该路径下所有文件的绝对路径使用非递归方式 知识点:绝对路径由指定目录的绝对路径加上文件的相对路径得到 使用sprintf()创建绝对路径int sprintf( char *buffer, const char *format, [ argument] … )buffer:char型指针,指向将要写入的字符串的缓冲区。format:原创 2014-06-14 15:31:33 · 3190 阅读 · 1 评论 -
列出指定目录下所有文件的最后被修改时间
要求:输入指定目录路径,输出该路径下所有文件及其对应的最后被修改时间。知识点:在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间。int stat(const char *restrict pathname, struct stat *restrict buf)通过stat结构体中的成员变量st_mtime可以获得文件的最后被修改时间原创 2014-06-14 18:09:33 · 1644 阅读 · 0 评论 -
列出指定目录下属于给定用户的所有文件
要求:给定目录路径和用户名作为输入参数,打印输出该目录下属于该用户的所有文件名。 知识点: struct passwd * getpwnam(const char * name) #include #include getpwnam()用来逐一搜索参数name 指定的账号名称,找到时便将该用户的数据以passwd结构返回。如果返回NULL 则表示已无原创 2014-06-14 18:23:38 · 817 阅读 · 0 评论 -
递归列出指定目录下所有的普通文件
要求:打印输出指定目录下所有普通文件,若文件为子目录,则递归搜索子目录下的普通文件。知识点:普通文件(Regular File)。指普通意义上的文件,如数据文件、可执行文件等。与其他类型的文件区别开来。int stat(const char *restrict pathname, struct stat *restrict buf) 宏定义S_ISREG (st_mode)判断是否为普通文件。原创 2014-06-14 17:51:46 · 1492 阅读 · 0 评论 -
递归列出指定目录下所有的符号链接文件
要求:打印输出指定目录下所有符号链接文件,若文件为子目录,则递归搜索子目录下的符号链接文件。知识点: int lstat(const char *restrict pathname, struct stat *restrict buf) #include #include 函数说明 lstat()与stat()作用完全相同,都是取得参数file_name所指的文件状原创 2014-06-14 17:49:42 · 1331 阅读 · 0 评论 -
关闭文件的 group的写权限和other的写权限
要求:输入文件名,打印输出该文件初始的group和others权限,以及关闭写权限后的group和others权限 知识点:用stat函数来获取文件的访问权限,然后用chmod函数来关闭group的写权限和other的写权限。修改权限函数: int chmod(const char * path,mode_t mode) #include #include 函数原创 2014-06-14 14:36:02 · 1121 阅读 · 0 评论 -
获取文件属性
描述:获取文件的用户id,组id,大小,最后访问时间,最后修改时间。要求:输入文件名,打印输出该文件用户id,组id,大小,最后访问时间,最后修改时间。知识点:int stat(const char *restrict pathname, struct stat *restrict buf);stat结构体原创 2014-06-14 14:43:40 · 500 阅读 · 0 评论 -
修改文件的访问时间和修改时间为当前的时间
要求:输入文件名,输出处理前文件的最后访问/修改时间和处理后的最后访问/修改时间。知识点:int utime(const char * pathname, const struct utimbuf * times); #include times: 结构体struct utimbuf变量。原创 2014-06-14 14:50:11 · 2283 阅读 · 0 评论 -
文件读
要求:命令行中以文本文件名做输入参数,打印文件中内容。知识点:读函数:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)size:单个元素的大小,单位是字节 nmemb:元素个数 stream:提供数据的文件指针返回值:读取的元素的个数头文件:stdio.h;原创 2014-06-14 15:06:30 · 423 阅读 · 0 评论 -
文件写
要求:输入文件名及要写入文件的字符串,输出写入后文件的内容。每次需要在原有文件内容基础上追加写入。知识点:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)头文件:stdio.hptr:要获取的数据的地址(指针)size:单个元素的大小,单位是字节nmemb:元素个数stream:提供数据的文件指针返回值:原创 2014-06-14 15:10:22 · 450 阅读 · 0 评论 -
文件的重命名
要求:输入文件名以及新文件名,输出是否成功命名文件。 知识点:int rename(const char *old_filename, const char *new_filename)old_filename: 包含将要被重命名的文件的原始名称。new_filename:新的文件名称。返回值:一旦成功,返回0,否则,返回-1.原创 2014-06-14 15:12:36 · 483 阅读 · 0 评论 -
文件的删除
要求:输入要删除的文件名,输出是否删除成功的信息。知识点:int remove(const char *filename)参数: filename: 要删除的文件的名称返回值:一旦成功,则返回0,否则,返回-1头文件:stdio.h原创 2014-06-14 15:18:18 · 496 阅读 · 0 评论 -
递归列出指定目录下的所有文件名
知识点:递归函数:一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数)递归就是在过程或函数里调用自身在使用递增归策略时,必须有一个明确的递归结束条件在判断文件是目录文件后,递归调用函数遍历该子目录原创 2014-06-14 15:33:59 · 1090 阅读 · 0 评论 -
设置文件的文件访问权限为:rw-r--r--
描述:rw- (user权限) / r– (group权限) / r– (others权限)r: 读权限 w: 写权限 x: 执行权限要求:输入文件名,打印输出该文件初始权限,以及修改为rw-r--r--后的权限知识点:设置文件的多个权限位,对这些权限位进行按位或操作即可。S_IRUSR | S_IWUSR原创 2014-06-14 14:39:41 · 11631 阅读 · 0 评论 -
修改文件的组id
要求:输入文件名和新的组id,打印输出该文件原有组id和新的组id。知识点:chown函数:int chown(const char *pathname, uid_t owner, gid_t group);#include #include 参数pathname表示文件的路径参数owner表示新的所有者用户的ID。 参数group表示新的组ID。 参数o原创 2014-06-14 14:47:09 · 982 阅读 · 0 评论 -
文件另存为
描述:将已有文件另存为一个新的文件。综合文件的创建和读写操作。要求:输入文件名以及要另存为的新文件名,输出是否成功的信息。知识点:FILE *fopen(const char *path, const char *mode);size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)size_t fwrite(const voi原创 2014-06-14 15:15:41 · 1690 阅读 · 0 评论 -
递归列出指定目录下的所有文件的绝对路径
#include#include#include#include#include#include#include#define SIZE 1024int dir_run(char *path){ DIR *dir; dir = opendir(path); if (dir == NULL) {原创 2014-06-14 17:42:22 · 1524 阅读 · 0 评论 -
搜索指定目录下是否存在某个文件
描述:搜索指定目录下是否存在某个文件,如果存在,则输出该文件的绝对路径要求:指定目录路径与待搜索文件名作为输入参数,打印输出搜素结果信息。如果判断文件是目录文件,则需要递归进行搜索知识点:DIR* opendir (const char * path ) struct dirent *readdir(DIR *dir)根据dirent结构体中获得的文件的文件名,来判断是否是要搜素原创 2014-06-14 17:46:56 · 1067 阅读 · 0 评论 -
在指定目录下创建一个新目录
要求:给出指定目录和要新建的子目录名做输入参数,打印信息表明是否创建成功。首先判断指定目录下是否已存在要创建的目录,如果已存在,则不必再创建。知识点:创建目录函数:int mkdir(const char *pathname,mode_t mode)#include #include #include原创 2014-06-14 18:29:51 · 9291 阅读 · 0 评论