4

うまくいけば、これはここの誰かにとって簡単なものになるでしょう...私はunixで文字列を再帰的に見つけて置き換える必要があります。

通常、私は以下を使用します:

perl -e "s/term/differenterm/g;" -pi $(find path/to/DIRECTORY -type f)

しかし、置き換える必要のある文字列にはスラッシュが含まれており、それらをエスケープする方法がわかりませんか?

だから、私はする必要があります:

perl -e "s/FIND/REPLACE/g;" -pi $(find path/to/DIRECTORY -type f)

ここで、FIND ='/ string / path/term'およびREPLACE='/string / path / newterm'

4

2 に答える 2

11

以外の文字を使用できます/。例えば:

perl -e "s|FIND|REPLACE|g;" -pi $(find path/to/DIRECTORY -type f)

http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operatorsの詳細情報

于 2012-04-17T01:18:17.807 に答える
1

UNIX では、次のようになります。

find "$path" -type f -print0|xargs -0 \
    perl -p -i -e "s/term/differenterm/g;"

これは、findxargsを使用してサブツリー内のすべてのファイルを検索し、処理のために perl に渡します。

正規表現で / を使用する場合は、次のいずれかでエスケープできます\

    perl -p -i -e "s/\/source\/path/\/dest\/path/g;"

/または、正規表現自体とは異なる区切り文字を使用します。

    perl -p -i -e "s|/source/path|/dest/path|g;"

また、サブツリーでプログラムを再帰的に実行する方法は他にもありますが、すべてがスペースやその他の特殊文字を含むファイル名を適切に処理できるわけではありません。

于 2012-04-17T01:17:36.707 に答える