我正在寻求优化以下命令的帮助,但如果将来对任何人都有帮助,我也会将其写在这里作为参考。
我想浏览当前文件夹中的所有.swift
文件,并递归地继续使用任何和所有子文件夹中的文件,然后执行:
- 删除每个文件中的
N
(低于7)第一行 -
前置,不追加,多行,包含可能需要转义的字符(如
//
)
我提出的解决方案受到了这个答案的启发,并得到了@EdMorton的批准👏,但是从文件中读取要前置的多行文本,而不是echo
作为字符串。
只有当您的路径上没有空间时,这可能才有效
解决方案
您可以将其复制粘贴到终端中,将8
替换为要删除的行数,还可以将~/Desktop/TextToPrepend.txt
替换为要准备内容的文件路径。
find . -name '*.swift' | while IFS= read -r f; do
cp ~/Desktop/TextToPrepend.txt tmpfile &&
tail -n +8 "$f" >> tmpfile &&
mv tmpfile "$f"
done
改进
如果允许n个路径的空间,而不必使用文件,而是使用一个就地多行解决方案,那会更好,但我遇到了换行和转义//
的问题。
用例
我只是用它来替换一个名为"Zhip"的开源iOS Zilliqa钱包中所有Swift文件的文件头。
Xcode中文件头的标准是每行都以注释//
开头。
专业提示
按照本指南的建议,通过添加文件IDETemplateMacros.plist
来启动您的项目。