根据对应规则,批量修改文件名
#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;
}