你还在用 “mkdir”+“cd”创建和切换路径吗?
本文作者:杨慧琳
文字编辑:王碧琪
技术总编:李朋冲
在日常的数据处理中,我们经常需要创建特定的文件夹来存放数据文件或者切换工作路径,一般做法是使用mkdir命令新建一个文件夹,然后通过cd命令转至该路径下。需要注意的是,如果不添加双引号,文件夹名称中是不可以出现空格的,否则Stata将报错。近日,小编发现了一个同样可用于创建和切换路径的命令efolder,它不仅支持路径名中的空格,还可以一次生成多个文件夹或子文件夹,从而较好地提升了Stata的操作效率。
efolder命令可以直接创建特定文件夹,并默认将其所在路径设置为当前工作路径。即使这一路径已经存在,Stata也不会报错。同时,efolder命令还可在指定路径或工作路径下新建文件夹,并进一步生成多个子文件夹。在使用前,需通过“ssc install efolder”进行安装,其基本语法如下:
efolder [foldername] [, options]
efolder命令的主要选项包括:
nochange:保持当前工作路径不变,否则默认转至新生成的路径下;
cd(string):在指定路径string下生成文件夹,且该层路径不一定需要事先创建;
sub:在当前工作路径或指定路径下生成3个子文件夹,默认名称为“f1”、“f2”、“f3”;
subname(name):在当前工作路径或指定路径下生成名称为name的(子)文件夹,这里可以同时定义多个(子)文件夹,每个(子)文件夹名称以空格分隔。
接下来,我们分别介绍efolder命令及各个选项的主要用法。
(1)不添加选项
假设Stata默认路径为d:/stata16,如果需要在D盘下创建一个名称为“efolder”的文件夹,并将其设置为当前工作路径,则直接执行:
efolder d:/efolder
我们看到,在D盘下,新创建了一个文件夹“efolder”,且Stata的当前工作路径也从“d:/stata16”切换为“d:/efolder”。原本需要执行“mkdir d:/efolder”和“cd d:/efolder”两步,现在一步即可完成,并且不用担心这个文件夹是否事先存在。
(2)nochange选项
在上一步操作中,我们已经将“d:/efolder”设置为当前工作路径。此时,若我们需在该路径下创建一个名为“temp”的文件夹,但保持当前工作路径不变,则可加入nochange选项。需要注意的是,如果efolder后面的foldername没有带计算机盘或指定路径名,则默认是在当前工作路径下创建。执行如下程序:
efolder temp, nochange //等同于 efolder d:/efolder/temp, nochange
(3)cd()选项
添加cd()选项后,可以快速创建指定路径下的文件夹,并且该路径不一定需要事先存在。例如,我们需要在指定路径“d:/efolder/temp1”(不存在)下,新建一个名称为“file1”的文件夹,则可以通过如下程序实现:
efolder file1, cd(temp1) nochange //保持工作路径“d:/efolder”不变
经过以上程序,我们在“d:/efolder”下创建了temp1文件夹,然后又在temp1文件夹里新建了file1子文件夹,且工作路径依然是“d:/efolder”。
其实,对于(2)中创建“d:/efolder/temp”的操作而言,也可以通过cd()选项改写为:
efolder temp, cd(d:/efolder) nochange
(4)sub选项
利用sub选项,可以在当前工作路径或指定路径下新建文件夹,并在新文件夹下生成3个默认名称为“f1”、“f2”、“f3”的子文件夹。比如,如果我们需在当前工作路径“d:/efolder”下创建新文件夹“temp2”,并进一步生成3个子文件夹,可通过以下程序完成,结果如下图所示:
efolder, cd(temp2) sub nochange //不改变当前工作路径
(5)subname()选项
若需要自定义创建的(子)文件夹名称,则可借助subname()选项实现。例如,我们需要在定义路径“d:/efolder/stataclub”(不存在)下生成新文件夹“training”,并在新文件夹下生成子文件夹“python”,则执行:
efolder training, cd(stataclub) subname(python) nochange
如上所示,我们成功地建立了三层新的文件夹:stataclub——training——python。
同时,借助subname()选项,我们也可以一次性创建多个子文件夹。如下:
efolder training, cd(stataclub) subname(python stata stata&python microeconometrics) nochange
其中,subname()选项中定义的各个子文件夹名称以空格分隔。结果如下:
此外,相比于mkdir和cd命令的组合,efolder命令的一个最亮眼功能在于,它允许文件夹名称中包含空格(创建时不需加引号)。比如,我们要在当前路径“d:/efolder”下创建一个名称为“python training from stataclub”的文件夹,则直接执行:
efolder python training from stataclub, nochange
需要注意的是,直接通过“efolder foldername”的形式创建文件夹,不论其后接的字符串多长或存在多少空格,最终都只创建一个文件夹。因此,若要一次性创建多个文件夹,则必须使用subname()选项,且定义的各个名称内不能出现空格,否则会被识别为不同文件夹。
通过以上介绍,我们便对efolder命令的基本功能有了一个大致的了解。该命令的灵活之处远不止如此,在实际操作中还需要我们多加探索。
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。