批量修改路径
本文作者:王碧琪
文字编辑:李钊颖
技术总编:李朋冲
爬虫俱乐部将于2020年1月5日至11日在湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。目前正在火热招生中~详细培训大纲及报名方式,请点击《爬虫俱乐部2020第一期Stata编程训练营开始报名啦!》或点击文末阅读原文呦~
另外,2019年11月29日-12月1日在湖北武汉举办的《2019年Python第四期培训招生》,招生工作已经结束,请大家继续关注我们后续的培训公告哦~
一、安装
filesearch和subinfile都是外部命令,我们首次使用时需要安装。
ssc install filesearch,replace
ssc install subinfile,replace
二、开始操作
我们可以用dir命令查看一下文件夹中的do文件。
clear
cd E:\file
dir
dir .\利润表\*.do
dir .\现金流量表\*.do
dir .\资产负债表\*.do
结果是:
如果我们使用往期推文《批量修改do文件路径》中的fs命令,则只能得到当前路径下的do文件,无法拿到同级子文件夹中的do文件。
fs *.do
4.subinfile命令配合filesearch命令
我们想要拿到所有的do文件的名称以及路径(以便填在subinfile的filesource里),只需要使用filesearch的递归搜索选项。
filesearch *.do, local(dofile) r //r表示遍历搜索。
结果是:
filesearch *.do, local(dofile) r fullpath
发现,结果只会出现一个点,我们还是不能把它用到subinfle的filesource中,所以我们要想办法补全完整路径,我们采用的方式是重新定义一个局部宏“f”。
filesearch *.do, local(dofile) r //r表示遍历搜索
foreach file in `dofile'{
local f : di "E:\file\""`file'" //显示完整的路径
di "`f'"
}
结果如下:
接下里,我们对do文件中的文本内容进行处理。其中一个do文件中的部分内容如下:
filesearch *.do, local(dofile) r //r表示遍历搜索。
foreach file in `dofile'{
local f : di "E:\file\""`file'" //显示完整的路径
di "`f'"
subinfile `"`f'"', from("[DdEe]:[/\\][Ss]tata教程[/\\]?") fromregex to("E:/file/") replace
}
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。