Como faço para encontrar todos os arquivos em uma pasta recursivamente pelo nome específico e renomeá-los?

2

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.

    
por die_humans 05.04.2011 / 14:00

2 respostas

5

A solução completa ficaria da seguinte forma

find -name '*.file.php' -exec rename 's/\.file\.php$/.file1.php/' {} \;
    
por Adam Byrtek 05.04.2011 / 22:44
0

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 ....

    
por Christoph 05.04.2011 / 14:07