要在所有文件和所有目录中查找和替换的文本

要在所有文件和所有目录中查找和替换的文本

我想替换所有文件中所有出现1800 102 6022的。1860 266 2666我在不同的目录中有不同的文件,其中可以包含1800 102 6022.

我在用:

perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" /*.jsp 

适用于单个文件夹。我想在父目录中运行它并将其应用于所有文件。

答案1

使用 find 命令来做到这一点,

find /xxx -name '*.jsp' -exec perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" {} \;

答案2

有多种方法可以做到这一点:

  1. 使用find

    find . -type f -name "*.jsp" \ 
      -exec perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" {} \;
    
  2. 如果您正在使用bash,请使用extglob

    shopt -s globstar 
    perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" **/*jsp
    
  3. 在 Perl 中完成整个事情,迭代目录中的文件,但这并不值得在这里付出努力。

相关内容