Renomear arquivo no diretório encontrado

1

Eu quero encontrar todos os arquivos que terminam em file.one.ext e renomeá-los para file.ext

Eu consegui chegar até aqui, no entanto, ele move o arquivo para o diretório de trabalho, não para o diretório em que ele encontrou o arquivo.

find . -name "file.one.ext" -exec bash -c 'mv "$0" "file.ext"' {} \;

$ 0 contém o caminho completo e o nome do arquivo, mas como faço para obter esse diretório para anexá-lo ao novo nome de arquivo.

Eu também tenho rename instalado, se isso facilitar as coisas. Eu estou em um macOS Sierra.

    
por Adam 11.04.2017 / 08:38

1 resposta

3

Como renomeio um arquivo no diretório em que ele está?

Tudo o que está faltando é dirname do comando:

find . -name "file.one.ext" -exec bash -c 'mv "$0" "$(dirname $0)/file.ext"' {} \;

Exemplo

mkdir test1 test2
touch test1/file.one.ext test2/file.one.ext
find . -name "file.one.ext" -exec bash -c 'mv "$0" "$(dirname $0)/file.ext"' {} \;
ls test1/ test2/

test1/:
file.ext

test2/:
file.ext

Demonstração

    
por 11.04.2017 / 09:27