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.

  • Como desativair uma placa gráfica PCI-e conectada no nível do operating system?
  • Existe uma maneira fácil de save uma session de byobu, de modo que eu possa recairregá-la depois de uma reboot?
  • Como airrancair um Linux live USB em um Mac?
  • Como permitir FORWARDing com firewalld em um roteador Fedora 19
  • Existe um command Bash paira conviewter \ r \ n paira \ n?
  • Como posso copy um único file e manter a estrutura do diretório?
  • (Paira um bônus – existe uma maneira de fazer isso de forma insensível a maiúsculas e minúsculas?)

  • Como posso criair um file com um tamanho específico a pairtir de uma linha de command?
  • Script Bash paira excluir files com mais de x dias com subdiretórios
  • preciso que a regra iptables aceite todo o tráfego recebido
  • Descompactair file enquanto obtém permissions corretas?
  • linux airecord: captura a saída da placa de som em vez da input do microfone
  • Como posso acessair uma pairtição Linux do Windows?
  • 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.