Linux 文件夹下所有文件指定字符串替换

时间:2022-03-09 09:56:42
sed -i "s/learndata/NewDisk\/learndata/g" `grep learndata -rl --include="*.py" ./`

背景:更改代码生成的文件和读取的文件的所在目录,需要更改该所有代码中涉及到文件操作的路径
之前放在learndata文件夹下,现在放在,NewDisk/learndata路径下

  • sed:文件操作命令
    -i:替换
    s/str1/str2/表示查找str1并替换为str2,后面跟g表示一行中有多个str1的时候,都替换,而不是仅替换第一个
    “之间的表示要替换的文件,使用grep命令搜索。(注意这里不是单引号,是飘)
  • grep
    grep str1 -rl ./中str1为要搜索的字符串,参数r递归搜索文件夹下的所有文件,l查询多文件时只输出包含匹配字符的文件名。
    [options]主要参数:
    -c:只输出匹配行的计数。
    -I:不区分大 小写(只适用于单字符)。
    -h:查询多文件时不显示文件名。
    -l:查询多文件时只输出包含匹配字符的文件名。
    -n:显示匹配行及 行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包含匹配文本的所有行。