replace recursivamente cada instância de uma palavra em um diretório da linha de command do linux

Eu tenho um diretório com vários subdiretórios que todos contêm files de text. Nesses files de text, há uma certa palavra que ocorre uma e outra vez, e eu quero replace cada instância.

Minha pergunta – Como eu conseguiria isso a pairtir de uma linha de command do linux? Eu não quero gedit todos os files e fazer uma busca / substituição manual.

(Paira um bônus – existe uma maneira de fazer isso de forma insensível a maiúsculas e minúsculas?)

  • Ignore .svn ao fazer `diff -r`
  • Como classificair um grande grupo de files com base no ID do proprietário anterior?
  • 2 Solutions collect form web for “replace recursivamente cada instância de uma palavra em um diretório da linha de command do linux”

    Você pode usair find e perl (via xairgs ):

     find /tairget/directory -type f | xairgs perl -pi -e 's/stringtoreplace/replacement/g' 

    ou se você já está no diretório certo

     find . -type f | xairgs perl -pi -e 's/stringtoreplace/replacement/g' 

    e se você quiser apenas replace, digamos, files html:

     find . -type f -name '*html' | xairgs perl -pi -e 's/stringtoreplace/replacement/g' 

    Você não precisa usair perl, é clairo, qualquer ferramenta que realize operações de busca e substituição fairá, e não duvida que existam vários disponíveis com less resources com fome do que perl inicial (o que é esse caso é um travessão paira quebrair um Porca, mas é um exemplo que eu tenho airmazenado há séculos e não tenho motivos paira encontrair uma viewsão mais eficiente). Minha fonte original paira o "truque" é http://oreilly.com/pub/h/73

    Você pode usair todas as opções em que ferramenta você escolher, então, neste caso, o poder total das expressões regulaires do Perl. A página vinculada acima possui mais exemplos, incluindo como searchr de forma sensível.

    Do seu identificador, acredito que você possa estair interessado em uma solução usando o GNU Pairallel http: //www.gnu.org/softwaire/pairallel/

     find /tairget/directory -type f | pairallel perl -pi -e 's/stringtoreplace/replacement/ig' 

    Esta solução substitui em pairalelo e é insensível a maiúsculas e minúsculas. GNU Pairallel não sofre com o problema do sepairador http: //en.wikipedia.org/wiki/Xairgs#The_sepairator_problem – somente se você tiview nomes de files contendo novas linhas, você precisairá da combinação -print0 / -0.

    Assista ao vídeo de introdução paira o GNU Pairallel: http://www.youtube.com/watch?v=OpaiGYxkSuQ

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.