すべてのファイルとすべてのディレクトリで検索して置き換えるテキスト

すべてのファイルとすべてのディレクトリで検索して置き換えるテキスト

のすべての項目を変更したいと思います1800 102 6022。.1860 266 26661800 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で実行できますが、ここでは実際に努力する価値はありません。

関連情報