Localiza e substitui string em nomes de diretórios

5

Eu tenho uma estrutura de arquivos que tive que recuperar e ela contém: 2f no nome

Por exemplo, nome do diretório anyname:2fmorename

Eu quero poder alterar :2f para _ em todos os diretórios e subdiretórios.

Estou pensando em algo como

find . -name *:2f* -type d -execdir mv{} *_* \;

Mas eu não consigo descobrir com certeza.

    
por Bill 11.07.2017 / 17:08

2 respostas

5

Se você tem o Perl rename instalado, você pode fazer isso com isso:

find . -name '*:2f*' -type d -exec rename 's/:2f/_/g' {} \;

Se você quiser testá-lo primeiro , adicione um echo :

find . -name '*:2f*' -type d -exec echo rename 's/:2f/_/g' {} \;
    
por 11.07.2017 / 17:22
1

Obrigado por ter conseguido que funcionasse usando o seguinte:

find /path -depth -type d -name '*:2f*' -execdir bash -c 'mv -v "$1" "${1//:2f/_}"' _ {} \;
    
por 13.07.2017 / 03:09

Tags