查看原文
其他

​renfiles:批量重命名文件的利器

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:王   滢,河南大学经济学院

本文编辑:陈丹慧

技术总编:李婷婷

Python云端课程来啦!

      寒雪梅中尽,春风柳上归。新的一年,正值开学之际,为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!原价2400元的Python编程培训课程,现在仅需100元即可通过腾讯课堂参与学习。详细培训大纲及报名方式请查看推文Python云端课程福利大放送!0基础也能学~或点击文末阅读原文直接报名呦~另外,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

导读

相信老师和同学们在日常生活或是科研过程中一定遇到过需要对于大量文件进行重命名的烦恼。例如:从数据库中下载的批量数据文件需要进行统一格式的命名;收电子作业,同学们上交的文件命名格式混乱,难以整理等等情况。在这些情况下,如果对每一个文件右击进行重命名,工作量繁琐且容易遗漏或者出错。那么今天就给大家介绍一个处理批量文件重命名的利器——renfiles 命令,可以对指定路径下所有匹配成功的文件进行重命名操作。


1renfiles命令介绍(1)命令安装

renfiles命令为外部命令,需要先进行安装才能使用,安装命令为:

ssc install renfiles,replace

(2)命令语法

renfiles [,folder(string) match(string) subs(string) insign(string) outsign(string) erase oldstx]

(3)选项介绍

  • folder(string):设定待重命名的文件所在的文件路径。默认情况下,该路径为当前的工作路径。

  • match(string):设定从文件夹中选择文件的匹配条件。默认情况下是匹配设定路径下的所有文件。

  • subs(string):用于确定所设定的匹配条件是否适用于子目录。

  • insign(string) :设定被替换的文件名的匹配条件,默认是  "." 。

  • outsign(string):设定替换后的文件名符号,默认是 "_" 。

  • erase:该选项用于确定匹配文件经过重命名后是否删除原始文件。

  • oldstx : 如果指定该选项,那么匹配将不区分大小写。


2案例应用下面让我们用几个小例子来加深一下对renfiles命令的理解:

(1)设定路径下批量文件的重命名

首先我们使用Stata中的auto数据集生成一些Excel文件:

clear allcap mkdir D:\实例  //创建工作路径cd D:\实例   //设定当前工作路径为D:\实例sysuse auto,clearforvalues i = 1(1)3 { export excel fs.`i'.xlsx,replace  export excel ab.`i'.xlsx,replace export excel FA.`i'.xlsx,replace }  //利用循环,在当前工作路径D:\实例下生成9个Excel文件,分别命名为fs.1-fs.3,ab.1-ab.3,FA.1-FA.3结果如下图所示:

接下来,使用renfiles命令将路径D:\实例下所有以字母 "f"为前缀开头的文件进行重命名,把文件名中的 "." 替换为 "_" ,并保留修改前的原始文件,具体如下:

renfiles,folder(D:\实例) match("f*") insign(".") outsign("_") oldstx

其中,folder(D:\实例) 表示设定待重命名文件位于路径D:\实例,默认是当前工作路径;match("f*")表示将对以f为前缀开头的文件名进行重命名;insign(".") outsign("_")表示将文件名中的 "." 替换为"_" ;oldstx设定在匹配时不区分大小写,即无论是以小写"f"或是大写"F"为前缀的文件均符合匹配条件。

运行上述代码,结果如下:

可以看到,路径D:\实例下所匹配到的文件fs.1.xlsx、fs.2.xlsx、fs.3.xlsx,以及FA.1.xlsx、FA.2.xlsx、FA.3.xlsx均进行了重命名,变成了fs_1.xlsx、fs_2.xlsx、fs_3.xlsx和fa_1.xlsx、fa_2.xlsx、fa_3.xlsx,并且修改前的原始文件也保留了下来。

(2)子文件夹下批量文件的重命名

接下来在上例工作路径D:\实例中原始数据的基础上,生成子文件夹a.1fs.1,并且分别在这两个文件夹中生成Excel文件C.1-C.5,代码如下:

clear allcd D:\实例 //设定工作路径为D:\实例cap mkdir D:\实例\a.1 //生成子文件夹a.1cd D:\实例\a.1forvalues i = 1(1)5 { sysuse auto,clear export excel C.`i'.xlsx,replace } //利用循环在文件夹a.1下生成Excel文件C.1-C.5cap mkdir D:\实例\fs.1 //生成子文件夹fs.1cd D:\实例\fs.1forvalues i = 1(1)5 { sysuse auto,clear export excel C.`i'.xlsx,replace }  //利用循环在文件夹fs.1下生成Excel文件C.1-C.5结果如下:


接下来,使用renfiles命令,将D:\实例中以 "a" 开头的子文件夹(即文件夹a.1)中的所有文件进行重命名,将文件名中的 "C"修改为 "D",并且删除原始文件,代码如下:

renfiles,folder(D:\实例) subs("a*") insign("C") outsign("D") erase

其中,subs("a*")表示对以a为前缀的子文件夹进行匹配;insign("C") outsign("D") 表示将文件名中的 "C" 替换为 "D";erase则表示进行重命名后删除原始文件。

执行后,结果如下:

从上述结果可以看出,只有子文件夹a.1中的文件进行了重命名,而且删除了原始文件,工作路径D:\实例和子文件夹fs.1下的文件名并没有发生改变。

以上就是对于renfiles命令的简单介绍了。有了renfiles,批量文件重命名将不再是烦恼,大家快动手试一试吧!


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐

Stata中字符串的处理

物以类聚——浅述k-means聚类算法

我在哪里?调用高德API获取地址经纬度信息

超级简单的条件函数,轻松生成虚拟变量

Python云端课程福利大放送!0基础也能学~

【爬虫实战】“我们,继续新故事”——爬取LOL英雄皮肤

“人像动漫化”—Python实现抖音特效

跨框架合并数据|frlink的用法,你get到了吗

《唐探3》做错了什么?|来自150万字影评的证据

爬虫俱乐部年度总结|《请回答2020》

春节假期临近,来爬爬豆瓣看看有什么好剧
putdocx生成Word文档so easy!

模糊匹配我只用这一招!

利用tushare获取财务数据

爬虫实战|Selenium爬取微信公众号标题与链接

轻轻一点,就知有没有|rqrs命令介绍

强大的正则表达式

自动群发邮件(二)——附带附件

自动群发邮件--email和smtplib基本模块的使用

批量处理变量名和标签的小方法

计算工作日的小能手——workdays

Seminar | 企业错报与银行贷款合同

Seminar | 共同基金行业的性别歧视
Seminar | 来自女儿的塑造:高管、女性社会化与企业社会责任

小贴士:Markdown的基本语法

听说相貌也能量化 | 调用百度人脸检测API实现颜值打分

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存