栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Linux 根据对应规则,批量修改文件名(C++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux 根据对应规则,批量修改文件名(C++)

根据对应规则,批量修改文件名
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
string path_name = "/home/gitrepo/rename_files/rz/";
vector macs;
vector names;

vector getFiles(string cate_dir) {
  vector files; //存放文件名
  DIR *dir;
  struct dirent *ptr;
  char base[1000];

  if ((dir = opendir(cate_dir.c_str())) == NULL) {
    perror("Open dir error...");
    exit(1);
  }

  while ((ptr = readdir(dir)) != NULL) {
    if (strcmp(ptr->d_name, ".") == 0 || strcmp(ptr->d_name, "..") == 0)
      continue;
    if (ptr->d_type == 8) /// file
      files.push_back(ptr->d_name);
    if (ptr->d_type == 10) /// link file
      files.push_back(ptr->d_name);

    string folder_name = ptr->d_name;
    // 去掉文件名的头尾,只保留中间mac,用于匹配
    folder_name.erase(0, 4);
    folder_name.erase(12);
    // cout<d_name;
        // 新文件名
        string newName = path_name + add_name + ptr->d_name;

        // .c_str()将 string 转换为char *
        rename(oldName.c_str(), newName.c_str());
        // free(oldNamePointer);
        // free(newNamePointer);
        cout << "Mac:" << folder_name << "  修改为: " << add_name << endl;
      }
    }
  }
  closedir(dir);

  //排序,按从小到大排序
  // sort(files.begin(), files.end());
  return files;
}

int main() {
  // 读取mac地址、以及对应的人名
  string mac_, name_;
  ifstream ifs_mac, ifs_name;
  ifs_mac.open("/home/gitrepo/rename_files/data/mac_.txt", ios::in);
  ifs_name.open("/home/gitrepo/rename_files/data/name_.txt", ios::in);
  if (ifs_mac.is_open() && ifs_name.is_open()) {
    while (ifs_mac >> mac_ && ifs_name >> name_) {
      macs.push_back(mac_);
      names.push_back(name_);
    }
  }
  ifs_mac.close();
  ifs_name.close();

  cout << "names.size():" << names.size() << endl;
  cout << "macs.size():" << macs.size() << endl;

  // for(int i=0; i files = getFiles(path_name);
  cout << "files.size():" << files.size() << endl;
  // for (int i = 0; i < files.size(); i++) {
  //  cout << files[i] << endl;
  //}
  return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号