linux - 如何在目录和子目录中的所有文件中用另一个字符串模式替换字符串模式

标签 linux shell grep

我正在重组我的网站并且必须重新安排文件中的引用。有一个目录包含许多子目录和 php 文件。我正在寻找某种命令/脚本,该命令/脚本可以搜索该目录中的每个文件以获取此模式并将其替换为自定义模式。

例如:我想用 /shopping/shop/ipad 替换 one/two/three/ 的确切出现。换句话说,如果任何文件包含一些字符串,例如:

location:index.php?p=one/two/three/abcdefg&aid

那么应该换成

location:index.php?p=/shopping/shop/ipad/abcdefg&aid

请注意,内容替换应该发生在每个文件中,在主目录中的每个目录 / 子目录中(假设主目录名称是 abc 和所有子目录& 文件在 abc 内)。目录名称本身不应更改。我怎样才能做到这一点?我的服务器运行 linux,我有 root 和 shell 访问权限。

最佳答案

find . -type f|xargs perl -pi -e 's/one\/two\/three/shopping\/shop\/ipad/g'

经过测试,工作正常。如果有 o,它也不会替换 只有一个

你也可以找到它here

关于linux - 如何在目录和子目录中的所有文件中用另一个字符串模式替换字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076611/

相关文章:

node.js - npx - `@` 在 `npx prettier` 与 `npx prettier@2` 中做什么?

bash - 命令替换中的 Heredoc : error when quotes or parentheses are unbalanced (bash and zsh)

linux - 如何 grep 2 或 3 行,其中包含我想要的文本,其他的就在它下面

linux - 在linux中搜索另一个文件的另一列中的一列

javascript - Linux 操作系统上的 ibm_db 模块安装问题

linux - 生成文件 : missing separator

linux - 将文件从一个目录移动到另一个目录并添加到新目录中的每个文件名

linux - 如何从终端在centos7上安装vlc?

linux - 如何在 bash 作业列表中扩展变量

linux - 我对 grep 的使用有什么问题?