tentando Renomear vários nomes de arquivos em todos os diretórios de um projeto

2

Eu recentemente tentei mudar os nomes em torno do meu projeto e tive alguns problemas para fazer a tarefa corretamente.

meu problema é quando tento usar

find . -type f -print0 | xargs -0 sed -i 's/volix/sergio/g' find . -type f -print0 | xargs -0 sed -i 's/Volix/Sergio/g' find . -type f -print0 | xargs -0 sed -i 's/VOLIX/SERGIO/g' find . -type f -print0 | xargs -0 sed -i 's/VLX/SRG/g'

isto irá encontrar e substituir todos os nomes dentro dos arquivos que eu estou tentando mudar, mas deixa o nome das pastas ainda o mesmo que eles antes do nome mudar.

EDIT: Eu gostaria de substituir todas as ocorrências de "volix" para "sergio" sem perturbar o resto do nome do arquivo, então eu gostaria de substituir assim

  • volix-res.rc
  • volix.qrc
  • volix-tx.cpp
  • volix_logo_horizontal.png
  • volix_logo_horizontal2x.png
  • unit_tmvolix.png
  • unit_tvolix.png

para -

  • sergio-res.rc
  • sergio.qrc
  • sergio-tx.cpp
  • sergio_logo_horizontal.png
  • sergio_logo_horizontal2x.png
  • unit_tmsergio.png
  • unit_tsergio.png

e muitos mais arquivos com o nome "volix" nele, estou imaginando como posso alterar todos eles de uma só vez, em vez de renomear manualmente um por um?

    
por john bullock 20.10.2018 / 05:54

2 respostas

1

find . type -f só encontra arquivos.

O que você precisa é:

find -type d -name current_name -exec mv {} desired_name \; 

Isso encontrará diretórios recursivamente e os renomeará para o que você deseja.

    
por 20.10.2018 / 07:26
0

Tente isto:

find . -type f -print0 |
  parallel -0 mv {} '{= s/volix/sergio/g; s/Volix/Sergio/g; s/VOLIX/SERGIO/g; s/VLX/SRG/g =}'
    
por 20.10.2018 / 22:18