Shell Geek renomeia vários arquivos de uma só vez
Digamos que você tenha um diretório com centenas de arquivos com nomes de arquivos incorretos e queira substituir cada nome de arquivo teste com prod. (este é um exemplo inventado). Podemos facilmente fazer isso com o comando “for” no bash, combinado com um pouco de bondade. Hoje vamos aprender como substituir o texto em uma variável em um loop for.
O comando "for" funciona assim:
para var in; do $ var; done
Você pode substituir com qualquer padrão de correspondência de arquivo, como * ou * .txt, e você pode substituir com qualquer comando linux. O comando será executado em seqüência em cada um dos arquivos correspondidos pelo padrão de correspondência de arquivos.
É aqui que o manuseio da variável bash torna ainda mais interessante. Em vez de apenas fazer algo como “mv $ var”, podemos substituir o texto no nome do arquivo usando esta sintaxe:
$ var / originaltext / replacetext
Então, agora, se nós executarmos este comando em nosso diretório:
para f in *; faça mv $ f $ f / teste / prod;
Para cada arquivo correspondido por *, o bash executará um comando semelhante a este:
mv test.config prod.config
Descobri que o conhecimento do shell é inestimável ao administrar servidores ou apenas para gerenciar sua coleção de arquivos, e me salvou horas do que, de outra forma, teria sido o trabalho manual.
E sim, eu percebo que há uma série de ferramentas que podem realizar a renomeação de vários arquivos.