如何在Linux命令行中替换具有不同层次结构的多个文件夹中的多个文件中的字符串

Bil*_*lal 3 command-line bash text-processing

我有许多扩展名*.launch分布在父目录内不同文件夹中的文件,文件的层次结构并不总是相同.launch。即:src/folder/sth.launchsrc/folder2/../../another.launch,所以这个解决方案在这里不起作用!

如何使用 Linux 命令在不同文件夹和级别的所有这些文件中将一个字符串替换xarco.py为另一个字符串?提前致谢。xarco*launch

sud*_*dus 6

在父目录中时,您可以尝试使用以下命令,

find . -type f -name "*.launch" -exec echo sed -i 's/xarco.py/xarco/g' {} \;
Run Code Online (Sandbox Code Playgroud)

如果它“看起来不错”,就移除echo去做真正的工作,

find . -type f -name "*.launch" -exec sed -i 's/xarco.py/xarco/g' {} \;
Run Code Online (Sandbox Code Playgroud)

如果权限有问题,您可能需要添加前缀sudo

sudo find ...
Run Code Online (Sandbox Code Playgroud)

  • 这是因为它允许“空运行”。 (2认同)