问题描述
我一直在用一本非常酷的C语言入门书来学习编程,我写下了每个示例和任务,这样我就可以真正地学习语法。到目前为止,我一直手动处理每个文件,但是单击,命名和保存都用尽了。
我需要一种方法来创建多个文件,例如bspl0001.c
,bspl0002.c
,bspl0003.c
等,并将它们保存在目录”learning_c”或类似的文件中。
我是Ubuntu /Linux的新手,老实说只能通过VirtualBox运行它,因为IDE Geany易于设置。因此,我真的不知道终端机的工作原理。
编辑我刚刚在我的这个旧帐户中找到了自己,并为自己为什么要内心学习代码语法而摇了摇头。有趣的是,我的CS /数学BSc学习几乎完成了。非常感谢您的后见之明!
最佳方法
您可以使用以下命令执行此操作:
mkdir learning_c
cd learning_c
touch bspl{0001..0003}.c
说明:
-
mkdir learning_c
-
这将在当前文件夹中创建一个名为
learning_c
的文件夹 -
当前文件夹通常是您的主文件夹,也称为
~
-
您可以使用
cd
命令更改当前目录(即cd Desktop
)
-
-
cd learning_c
-
是的,您可以猜到,您正在输入新创建的文件夹
-
-
touch bspl{0001..0003}.c
-
touch
是用于创建空文件和修改时间戳的工具;我们正在创建空文件。 -
touch myfile
将创建一个名为myfile
的空文件。 -
后面的丑陋代码(
bspl{0001..0003}.c
)被称为大括号扩展。这是bash
Shell的一项重要功能,可让您创建任意字符串组合的长列表。您可以在Bash Hackers Wiki中了解更多信息。在这种情况下,您将制作一长串将传递给touch
的参数。您还可以使用其长等效项:touch bspl0001.c bspl0002.c bspl0003.c
-
您可以更改文件数:如果需要12个文件,则可以运行
bspl{0001..0012}.c
。 -
前导零(
0012
而不是12
)确保输出使用zero-padded 4位数字。
-
次佳方法
使用快捷键组合创建编号正确的(下一个)文件
为什么要一次创建所有文件?缺点是您将有很多空文件和未使用的文件。我实际使用的是:按组合键以:
-
在我的代码目录中看到一个脚本,该脚本应该是”next”文件,
-
创建正确命名的文件(包括shebang)并
-
在编辑器中打开新文件(以Idle为例)。
一键操作。这样,您可以防止大量(仍)未使用的文件;仅在需要时才创建文件。
下面是简化版本(不运行步骤3)。在每次按键时,它将创建一个编号正确的文件,例如:
bspl0001.c, bspl0002.c, bspl0003.c etc
#!/usr/bin/env python3
import os
#--- set your code directory below
dr = "/path/to/your/coding_files"
#--- set the desired (base) name extension and shebang below (leave it ""if you don't want an automatically set shebang)
name_initial = "bspl"
extension = ".c"
shebang = ""
#---
existing = os.listdir(dr)
n = 1
while True:
file = dr+"/"+name_initial+str(n).zfill(4)+extension
if os.path.exists(file):
n = n+1
else:
with open(file, "wt") as out:
out.write(shebang)
break
如何使用
-
将脚本复制到一个空文件
-
在头部分中,设置目录的路径(以及可选的:更改基本名称和/或扩展名shebang)。
-
将脚本另存为create_empty.py
-
从快捷方式运行脚本:系统设置>键盘>自定义快捷方式。添加命令:
python3 /path/to/create_empty.py
第三种方法
您可以使用以下python代码,可以对其进行修改以满足您的需求。用文件名filecreator.py
保存以下代码
#!/usr/bin/env python
import os
import subprocess
work_path = os.path.abspath(os.path.dirname(__file__))
if not os.path.exists("learning_c"):
os.mkdir("learning_c")
os.chdir(os.path.expanduser(work_path+"/learning_c"))
n = 10 #put the number as you wish
for i in range(n):
subprocess.call(['touch', "bsdl"+str(i).zfill(4)+".c"])
然后使用以下命令执行它:
python filecreator.py