Linux下批量创建文件夹

检测文件是否存在

这里的文件包含普通文件或者是目录文件,下面是CentOS 7环境下的测试.

cpp 复制代码
#include <sys/stat.h>
#include <unistd.h>
#include <iostream>

int main()
{
  int ret = access("../lesson01/file.txt", F_OK);
  if (ret == 0)
  {
    std::cout << "存在" << std::endl;
  }
  else
  {
    std::cout << "不存在" << std::endl;
  }
  return 0;
}
shell 复制代码
[qkj@Qkj lesson01]$ ll
total 4
-rw-rw-r-- 1 qkj qkj 261 Aug 30 10:18 test.cc
[qkj@Qkj lesson01]$ 
[qkj@Qkj lesson01]$ g++ test.cc 
[qkj@Qkj lesson01]$ ./a.out 
不存在
[qkj@Qkj lesson01]$ 

说一下access函数,这是一个检测文件是否存在的函数,我们这里只是简绍,详细的函数明细看man手册

  • pathname: 文件名(注意带上路径,可以是绝对路径,也可以是相对的)
  • mode : 直接设为F_OK,仅仅是为了检测文件是否存在
cpp 复制代码
NAME
       access - check real user's permissions for a file

SYNOPSIS
       #include <unistd.h>

       int access(const char *pathname, int mode);

创建目录

这里也说一下我们在CentOS 7环境下下如何创建目录.

cpp 复制代码
NAME
       mkdir - make a directory

SYNOPSIS
       #include <sys/stat.h>

       int mkdir(const char *path, mode_t mode);

参数解释

  • path: 目录名,带路径
  • mode:目录的权限,可以使用八进制

下面是代码演示

cpp 复制代码
#include <sys/stat.h>
#include <unistd.h>
#include <iostream>
#include <string>

int main()
{
  umask(2);
  std::string str = "../lesson";
  for (int i = 1; i < 27; i++)
  {
    std::string s = str;
    if (i < 10)
      s += '0';
    s += std::to_string(i);
    int ret = access(s.c_str(), F_OK);
    if (ret == 0)
    {
      std::cout << s << " 存在" << std::endl;
    }
    else
    {
      mkdir(s.c_str(), 0777);
    }
  }

  return 0;
}
相关推荐
feng_you_ying_li2 分钟前
linux指令工具vim和gcc的介绍(6)
linux
charlie1145141913 分钟前
2026年正点原子开发板移植方案——从0开始的Rootfs之路(5)WSL + NFS 网络启动踩坑记:从挂载失败到成功启动的完整历程
linux·网络·驱动开发·学习·嵌入式·嵌入式linux
Wu Junwu6 分钟前
Linux启动过程中的initramfs和rootfs详解
linux·根文件系统·内核编译
IT 行者7 分钟前
CentOS 下源码编译安装完整版 Redis 8.0 指南(附 Rust 工具链详解)
redis·rust·centos
zzzsde8 分钟前
【Linux】库的制作与使用(1):库的概念及动静态库
linux·运维·服务器
2601_949814698 分钟前
ubuntu 安装 Redis
linux·redis·ubuntu
薛定谔的悦9 分钟前
站控显示下级从控EMS的版本信息开发(设计多线程和TCP通讯)
linux·网络·数据库·网络协议·tcp/ip·ems
看海的四叔10 分钟前
【Linux】命令行常规操作全攻略:入门+实战+速查
linux·运维·github·命令行·batch命令
RrEeSsEeTt13 分钟前
【HackTheBox】- BoardLight 靶机学习
linux·学习·网络安全·渗透测试·kali·红队·hackthebox
ruiang14 分钟前
如何在 Ubuntu 22.04 上安装 MySQL
linux·mysql·ubuntu