A solução completa ficaria da seguinte forma
find -name '*.file.php' -exec rename 's/\.file\.php$/.file1.php/' {} \;
Eu tenho uma árvore de pastas. Alguns deles contêm o arquivo chamado ".file.php" Como eu renomeio todos os arquivos com este nome recursivamente na árvore para ".file1.php"? Eu estou no servidor debian.
A solução completa ficaria da seguinte forma
find -name '*.file.php' -exec rename 's/\.file\.php$/.file1.php/' {} \;
você tem rename
no debian? idk, mas desde que está disponível no Ubuntu, eu acho que sim.
NAME renomear - renomeia vários arquivos
SINOPSE renomear [-v] [-n] [-f] perlexpr [arquivos]
DESCRIÇÃO "renomear" renomeia os nomes de arquivos fornecidos de acordo com a regra Especificadas como o primeiro argumento. O argumento perlexpr é uma expressão Perl que é esperado para modificar a string $ _ em Perl para pelo menos alguns dos os nomes de arquivos especificados. Se um determinado nome de arquivo não for modificado pelo expressão, não será renomeado. Se nenhum nome de arquivo for fornecido a linha de comando, os nomes dos arquivos serão lidos através da entrada padrão.
For example, to rename all files matching "*.bak" to strip the extension, you might say rename 's/\.bak$//' *.bak To translate uppercase names to lower, you'd use rename 'y/A-Z/a-z/' *
um exemplo copiado de um resultado do google pode estar bem próximo do que você deseja:
Aqui está um exemplo do comando renomear:
renomeie -n's / .htm $ /. html / ’* .htm
O -n significa que é um teste e Na verdade, não irá alterar nenhum arquivo. isto mostrará uma lista de arquivos que seria renomeado se você removeu o n. No caso acima, ele converterá todos os arquivos no diretório atual de uma extensão de arquivo de .htm para .html.
Se a saída do teste acima funcionar parecia ok, então você poderia executar o final versão:
renomeie -v 's / .htm $ /. html /' * .htm
O -v é opcional, mas é um bom idéia de incluí-lo porque é o apenas registro você terá de mudanças que foram feitas pela renomeação comando ....