Search 在命令行下具有特定文件名的文件中批量查找/替换

Search 在命令行下具有特定文件名的文件中批量查找/替换,search,replace,grep,Search,Replace,Grep,我正在寻找一个快速命令,用于搜索所有.htaccess文件中的特定IP地址,并从命令行将其更改为另一个IP地址 差不多 grep -rl '255.255.254.254' ./ | xargs sed -i 's/254/253/g' 我知道上面的例子是一个不好的方法,只是一个例子(我做了一些搜索来找到解决方案) Search: files with filename .htaccess (within 2 levels deep of current path?) Find: 255.25

我正在寻找一个快速命令,用于搜索所有
.htaccess
文件中的特定IP地址,并从命令行将其更改为另一个IP地址

差不多

grep -rl '255.255.254.254' ./ | xargs sed -i 's/254/253/g'
我知道上面的例子是一个不好的方法,只是一个例子(我做了一些搜索来找到解决方案)

Search: files with filename .htaccess (within 2 levels deep of current path?)
Find: 255.255.254.254
Replace with: 255.255.253.253
或者,这对我的服务器要求太高了,我最好在找到它们时更换它们?

试试:

find . -type f -name '.htaccess' -execdir sed -i 's/255\.255\.254\.254/255.255.253.253/g' {} +
工作原理:

  • 查找。

    开始在当前目录中查找文件

  • -类型f

    只查找常规文件

  • -name'.htaccess'

    仅查找名为
    .htaccess
    的文件

  • -execdir sed-i's/255\.255\.254\.254/255.255.253.253/g'{}+

    对于找到的任何此类文件,请对其运行此sed命令

    因为
    是一个通配符,您可能只想匹配文字句点,所以我们将它们转义为:
    \。

    我们使用
    -execdir
    而不是较旧的
    -exec
    ,因为它在竞争条件下更安全