我有一个恼人的闭源工具,它将特定信息写入其配置文件中。如果您尝试在其他文件上使用配置,则会加载旧文件。哎呀...
幸运的是,配置文件是文本,因此我可以对它们进行版本控制,事实证明,如果只是从文件中删除了违规行,则不会造成任何损害。
但该工具不断将线路放回去。所以每次我想检查新版本的配置文件时,我都要删除包含符号openDirFile
的所有行。
我即将构建某种bash命令,在每个文件上运行grep -v,将结果存储在临时文件中,然后删除原始文件并重命名临时文件,但我想知道是否有人知道一个好的干净的解决方案,或者已经调制并调试了类似的调用。
如果需要额外的功劳,如何在不破坏同一目录中的符号链接的情况下完成这项工作(favourite.rc-> signals.rc)?
答案 0 :(得分:18)
sed -i '/openDirFile/d' *.conf
这会删除所有conf文件
如果您的conf文件位于不同的路径中,您还可以将该行与“find”命令组合使用。
请注意-i将执行“就地”删除。
答案 1 :(得分:0)
这是我提出的bash-spell:
for i in *.rc ; do TMP=$(mktemp) ; grep -v openDirFile ${i} >${TMP} ; mv ${TMP} ${i} ; done
肯特的回答显然更胜一筹。