使用sed替换目录

时间:2018-01-16 22:05:20

标签: regex linux sed terminal

我试图找到并替换所有这些:

 #include <boost

用这个:

#include </home/pi/Desktop/boost_1_66_0/boost

让图书馆工作。这就是我想出的:

sed -i 's/#include <boost/#include <\/home\/pi\/Desktop\/boost_1_66_0\/boost/g' *

但是给了我这个:

  

sed:无法编辑构建:不是常规文件

我逃脱了&#39; /&#39;错了还是#问题?

1 个答案:

答案 0 :(得分:2)

看起来build是一个目录,您无法在目录上运行sed。一个选项是,如果您的目录树只有一个深度,则使用最终参数*/*而不是*。对于任意深度的目录结构,更有效的方法是使用find查找所有文件并在其上运行sed

find . -type f -exec sed -i 's/from/to/' {} \;

这使用find从当前目录开始并递归地下降目录树。对于它找到的每个常规文件(-type f),它将运行给予-exec选项的命令。它用{}替换它找到的文件。