要生成 fake-module-bpy(适用于 blender Python)...但是,语言并不重要。因此,我使用下一个控制台命令
]$ ls | grep -v _init_ | sed -E 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py
它将把所有 python 文件作为导入写入 __init__.py (排除其本身的 __init__.py)
我可以写入/附加文件的开头而不是结尾吗?
答案1
一切都grep
可以在以下范围内完成sed
:参见本教程。在这种情况下,您添加-e '/PATTERN/d'
以重现grep -v
选项:
ls | sed -E -e '/_init_/d' -e 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py
您可以ls
使用以下方法消除:
for f in *; do echo "$f"; done | sed -E -e '/_init_/s' -e 's/^([a-zA-Z0-1]+)/import \1/' >> __init__.py
这样就无需使用外部程序以及处理ls
默认添加的任何额外信息或标志。
有多种以相反顺序添加文件的方法:
- 如果您使用
ls
,那么ls -r
将以相反的顺序输出文件。 - 如果使用
for f in *; ...
,则通过管道传输输出sort -r
。 - 随后您可以使用
tac
它来反转输出中的行顺序。 - 冗长的方法是将每个文件输出到单行文件,将当前输出列表附加到其中,然后移动它以覆盖正在运行的输出列表。
答案2
这回答了你的第二个问题。
这里有一个在文件开头写入内容的小技巧sed
:
sed -i '1s/^/to start of file\n/' existing_file.txt
也许经过一些修改它就适合您。