Linux Perl正则表达式以递归方式替换多个文件组中的字符串,如“*”。php“&*。html";

Linux Perl正则表达式以递归方式替换多个文件组中的字符串,如“*”。php“&*。html";,linux,perl,recursion,replace,regexp-replace,Linux,Perl,Recursion,Replace,Regexp Replace,以下命令不起作用,不执行任何操作: sudo find /srv/my/directory -type f -iname '*.htm*' -iname '*.old1' -iname '*.php' | sudo xargs -iX sudo perl -p -i -e 's|\<\?php.*123456.*123456.*\?\>\r?\n\<\?php|<?php|g' 'X' sudo find/srv/my/directory-type f-iname'*.

以下命令不起作用,不执行任何操作:

sudo find /srv/my/directory -type f -iname '*.htm*' -iname '*.old1' -iname '*.php' | sudo xargs -iX sudo perl -p -i -e 's|\<\?php.*123456.*123456.*\?\>\r?\n\<\?php|<?php|g' 'X'
sudo find/srv/my/directory-type f-iname'*.htm*'-iname'*.old1'-iname'*.php'| sudo xargs-iX sudo perl-p-i-e's | \\r?\n\
  • 当指定要查找的几个条件时,默认情况下,它们由隐式的
    连接。没有文件可以匹配
    -iname'*.old1'-和-iname'*.php'
    。必须明确指定
    -或

  • 除非另有说明,
    perl-p
    逐行读取文件,因此它不能匹配
    \n
    
  • 当指定要查找的几个条件时,默认情况下,它们由隐式的
    连接。没有文件可以匹配
    -iname'*.old1'-和-iname'*.php'
    。必须明确指定
    -或


  • 除非另有说明,
    perl-p
    逐行读取文件,因此它无法匹配
    \n您能更详细地描述预期的行为吗?也许提供一个例子?你能更详细地描述预期的行为吗?也许提供一个例子?似乎
    sudo find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo xargs-iX sudo perl-0777-p-i-e's | \\r?\n\n我试图扩展该功能以处理其他情况,但是这个regexp不匹配:
    sudo-find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo-xargs-iX sudo-perl-0777-p-i-e's | \(\r?\n | \ | \#!.\)\n
    之后的
    被解释为替换定界符。使用另一个字符(请注意,我使用了标准斜杠)。工作方式:
    sudo find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo xargs-iX sudo perl-0777-p-I-e's@(\r?\n\n\n\35;\似乎
    sudo find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo xargs-iX sudo perl-0777-p-i-e's | \\r?\n\n我试图扩展该功能以处理其他情况,但是这个regexp不匹配:
    sudo-find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo-xargs-iX sudo-perl-0777-p-i-e's | \(\r?\n | \ | \#!.\)\n
    之后的
    被解释为替换定界符。使用另一个字符(请注意,我使用了标准斜杠)。工作方式:
    sudo find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo xargs-iX sudo perl-0777-p-I-e's@(\r?\n\n\n\35;\
    
    sudo find /srv/my/directory -type f -iname '*.htm*' -or -iname '*.old1' -or -iname '*.php' | sudo xargs -iX sudo perl -0777 -p -i -e 's|\<\?php.*123456.*123456.*\?\>\r?\n\<\?php|<?php|g' 'X'
    
    sudo find /srv/my/directory -type f -iname '*.htm*' -or -iname '*.old1' -or -iname '*.php' | sudo xargs -iX sudo perl -0777 -p -i -e 's@\<\?php.*123456.*123456.*\?\>(\r?\n|\#\!.*)\<\?php@<?php@gs' 'X'
    
    sudo find /srv/my/directory -type f \
        -iname '*.htm*' -or -iname '*.old1' -or -iname '*.php' \
        | sudo xargs -iX sudo perl -0777 -p -i \
            -e 's/<\?php.*123456.*123456.*\?>\r?\n<\?php/<?php/g' 'X'