Altera o nome de vários arquivos / pastas em um diretório

3

Existem alguns arquivos e pastas que contêm a palavra apple .

Como,

Root directory = AppleWorld
 ->AppleStore -> apple.png, appleStore 
 ->StoreOfApple -> apples -> peaches.png apples.jpg

Eu quero transformar todos os apple em orange

Então o resultado deve ser

Root directory = OrangeWorld
 ->OrangeStore -> orange.png, orangeStore 
 ->StoreOfOrange-> oranges -> peaches.png oranges.jpg'

Portanto, deve haver pelo menos duas operações para apple e Apple para orange e Orange

Eu tentei todos os comandos rename .

Por exemplo, estes

find ./ -execdir rename 's/Apple*/*Orange*/' '{}' \;
find ./ -iname 'Apple*' -execdir mv -i '{}' 'Orange*' \;

mas não funcionou. O que posso fazer?

    
por caner aydin 07.06.2018 / 16:43

1 resposta

3

Método

  • Altere o diretório para o topo da árvore de diretórios que você deseja tratar (alterar nomes de diretórios e arquivos).

    cd top-of-target-directory-tree
    
  • Em seguida, execute os seguintes comandos, execute dry para verificar e, em seguida, faça , se a verificação estiver boa,

    find . -depth -execdir rename -n 's/Apple/Orange/;s/apple/orange/' "{}" \;
    
    find . -depth -execdir rename 's/Apple/Orange/;s/apple/orange/' "{}" \;
    

Exemplo de teste

$ find
.
./Apple3
./Apple3/Apple4
./Apple3/apple4.1
./Apple3/Apple4/apple5
./apple1
./apple2
$ find -type d
.
./Apple3
./Apple3/Apple4

$ find -type f
./Apple3/apple4.1
./Apple3/Apple4/apple5
./apple1
./apple2

Corrida a seco

$ find . -depth -execdir rename -n 's/Apple/Orange/;s/apple/orange/' "{}" \; 
rename(./apple4.1, ./orange4.1)
rename(./apple5, ./orange5)
rename(./Apple4, ./Orange4)
rename(./Apple3, ./Orange3)
rename(./apple1, ./orange1)
rename(./apple2, ./orange2)

Faça isso

$ find . -depth -execdir rename 's/Apple/Orange/;s/apple/orange/' "{}" \;

Verifique isso

$ find
.
./orange1
./Orange3
./Orange3/Orange4
./Orange3/Orange4/orange5
./Orange3/orange4.1
./orange2
    
por sudodus 07.06.2018 / 20:30