当前位置:  开发笔记 > 编程语言 > 正文

sed命令使用-e扩展名创建不需要的文件副本

如何解决《sed命令使用-e扩展名创建不需要的文件副本》经验,为你挑选了1个好方法。

我试图使用shell脚本进行递归查找并替换目录中的java文件.它有效,但它隐藏了所有文件,并使用-e扩展名创建重复项

#!/bin/bash
for file in $(find . -type f -name "*.java")
do sed -i -e 's/foo/bar/g' $file
done

根据我的理解,-e是可选的 - 但如果我不提供它,我会在它找到的每个文件上收到以下错误

sed: 1: "./DirectoryAdapter.java": invalid command code .

任何线索,因为这里发生了什么?作为参考,我在运行El Capitan的Mac OS X上

这是运行脚本后目录的前后屏幕截图.被替换的文件仍然存在,它们被隐藏了吗?

在此输入图像描述



1> anubhava..:

在OSX sed(BSD)上sed需要一个扩展-i选项.由于-e之后发现它正在添加-e到每个输入文件名.顺便说一下,你甚至不需要-e选择.

你可以像这样传递一个空的扩展名:

sed -i '' 's/foo/bar/g' $file

或者.bak用于扩展以保存原始文件:

sed -i.bak 's/foo/bar/g' $file

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有