existe uma maneira rápida de alterar parte de um nome de arquivo em todos os arquivos e pastas em uma coleção de pastas aninhadas com algumas camadas de profundidade?

1

windows ou linux, ou funciona, está em uma unidade externa que pode ler

por exemplo. mudar "version2" para "version3" em todos os arquivos e pastas de um projeto?

Embora neste caso eu queira mudar as iniciais do paciente para "paciente-1" em cada nome de arquivo e pasta, são dezenas a centenas de arquivos, dezenas de gigabytes e cerca de 10 pacientes (dez coisas diferentes para mudar).

    
por Kirt 14.09.2017 / 09:29

2 respostas

0

No Linux, eu usaria find para localizar todos os arquivos relevantes e, em seguida, rename :

$ find . -name "*version2*" -exec rename version2 version3  {} \;

EDIT:
Para esclarecer, conforme o comentário de @ choroba abaixo, esta solução está relacionada a renomear (1) distribuído como parte do pacote util-linux.

    
por 14.09.2017 / 09:38
0

uma resposta que recebi de outro lugar, mas ainda não tentei e não sei se é ideal:

"Isso não é tão elegante quanto eu esperava, mas muda" -kr "para" -patient-123 "no final dos arquivos" * .txt ""

encontre. -type f -iname '* .txt' | perl -ne 'chomp; meu $ orig = $ ; if (s / -kr (.txt) $ / - patient-123 $ 1 /) {print "$ orig \ 0 $ \ 0"; } '| xargs -0rn2 mv -i

"ele só faz nomes de arquivos, as pastas podem ser feitas separadamente assim:"

encontre. tipo d | tac | perl -ne 'chomp; meu $ orig = $ ; if (s / -kr $ / - patient-123 /) {print "$ orig \ 0 $ \ 0"; } '| xargs -0rn2 mv -i

    
por 15.09.2017 / 14:39