Renomeie todos os arquivos com um certo nome

6

Estou tentando encontrar certos arquivos com o nome "stringx" e substituo o nome (mas não a extensão) por "stringy". Então, basicamente para stringx.txt e stingx.cs, eu quero stringy.txt e stringy.cs. Eu tentei testar o meu comando rename regex usando o seguinte, mas não retorna nenhum resultado:

rename -n 'stringx./s/\*$stringy./\/' stringx.*

Eu estou rodando csh sob Centos. Posso ver que meu regex provavelmente não está correto, mas não vejo nenhum resultado para verificar isso. Eu posso ver que existem arquivos que são denominados stringx. com o seguinte:

find ./ -name 'stringx.*'
    
por Aaron Newton 16.11.2011 / 23:54

1 resposta

11
rename stringx stringy stringx.*

Existem (pelo menos) dois utilitários chamados rename em sistemas Linux comuns. O Debian e distribuições derivadas (incluindo o Ubuntu) enviam um script Perl cuja sintaxe seria

rename 's/stringx/stringy/' stringx.*

Em outras distribuições, incluindo o CentOS, rename é do util-linux, e sua sintaxe é o que escrevi acima. Este utilitário está disponível sob o nome rename.ul no Debian e derivados.

Se você quiser recursar em subdiretórios, assumindo que por csh você quer dizer tcsh (mas, na verdade, pense em entrar em meados dos anos 90 e mudar para o zsh):

set globstar
rename stringx stringy stringx.* **/stringx.*
    
por 17.11.2011 / 00:25