The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX para Dummies Perguntas & Respostas
.
google unix.com



UNIX para Dummies Perguntas & Respostas Se não tiver certeza de onde se pode postar uma pergunta Unix ou Linux, postá-lo aqui. Todos os UNIX e Linux novatos bem vindos!

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
fazendo gato recursivamente sobre todos os arquivos em um diretório tulipa Programação Shell Script e 11 05-21-2009 06:24
recursivamente renomear arquivos catgovind UNIX para Dummies Perguntas & Respostas 2 08-20-2008 03:50
renomeie o arquivo em lote reldb UNIX & avançada para usuários experientes 7 01-14-2008 06:43
renomear em lote kathy18 Programação Shell Script e 3 03-09-2005 09:47
Lista Arquivos Recursivamente roberthawke UNIX para Dummies Perguntas & Respostas 9 06-24-2002 07:19

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 06-26-2009
.. Chris .. ..Chris.. is offline
Usuário
  
 

Join Date: Jun 2009
Posts: 4
Exclamation Batch renomear recursivamente

Gostaria de substituir vários sublinhados com hífens, mas tenho 26.000 para renomear arquivos. Estão todos em um arquivo estrutura e vários sub-diretórios.

Seria muito mais simples se eu tinha um script para fazer isso. Aqui estão algumas amostras dos nomes de arquivos:

Exemplo 1
books/horrors/small/books_horrors_small_0000000386.jpg

Mudar para

books/horrors/small/books-horrors-small-0000000386.jpg

Exemplo 2
books/comedy/small/books_comedy_small_0000001687.jpg

Mudar para

books/comedy/small/books-comedy-small-0000001687.jpg

Existem 26.000 arquivos que similer olhar para isso e são todos em diferentes diretórios.

A única coisa que precisa fazer é substituir todos os underscores _ com hífens --
  #2 (permalink)  
Old 06-26-2009
rakeshawasthi rakeshawasthi is offline
Usuário
  
 

Join Date: Aug 2004
Localização: Índia
Posts: 379
Você tentou alguma coisa? Pelo menos você deveria.
o código abaixo irá funcionar, mas tenta escrever o ciclo for para isso, pelo menos.

Código:
 sed 's/_/-/g'

  #3 (permalink)  
Old 06-26-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Usuário
  
 

Join Date: Sep 2006
Mensagens: 2.554

Código:
awk 'BEGIN{
    q="\047"
    path="/path/to/search"
    cmd="find "path" -type f -name \"*_*.jpg\""
    while(( cmd|getline f )>0){
        m=split(f,file,"/")
        gsub(/_/,"-",file[m])
        newfilename = join(file,1,m,"/")            
        mv = "mv "q f q" "q newfilename q
        print mv
        #system(mv) #uncomment to use                     
        close(mv)
    }
    close(cmd)
}
function join(array, start, end, sep,    result, i)
{
         if (sep == "") sep = " "
         else if (sep == SUBSEP) sep = ""
         result = array[start]
         for (i = start + 1; i <= end; i++)
             result = result sep array[i]
         return result
}'


Última edição por ghostdog74; em 06/26/2009 03:17..
  #4 (permalink)  
Old 07-01-2009
.. Chris .. ..Chris.. is offline
Usuário
  
 

Join Date: Jun 2009
Posts: 4
Batch File Rename Recursivamente - Brilhante, Agora Como no Diretório Nomes?

ghostdog74 da solução abaixo é brilhante e funcionou bem.

Seguimento pergunta:

Como fazer a mesma coisa, mas apenas sobre os arquivos no mesmo arquivo pasta árvore (recursivamente)?

DougABC123


Citação:
Originally Posted by ghostdog74 View Post
Código:
awk 'BEGIN{
    q="\047"
    path="/path/to/search"
    cmd="find "path" -type f -name \"*_*.jpg\""
    while(( cmd|getline f )>0){
        m=split(f,file,"/")
        gsub(/_/,"-",file[m])
        newfilename = join(file,1,m,"/")            
        mv = "mv "q f q" "q newfilename q
        print mv
        #system(mv) #uncomment to use                     
        close(mv)
    }
    close(cmd)
}
function join(array, start, end, sep,    result, i)
{
         if (sep == "") sep = " "
         else if (sep == SUBSEP) sep = ""
         result = array[start]
         for (i = start + 1; i <= end; i++)
             result = result sep array[i]
         return result
}'
Reply

Marcadores

Tags
lote renomear substituir _ --

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 10:04.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0