The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > UNIX for Dummies Spørsmål og svar
.
google unix.com



UNIX for Dummies Spørsmål og svar Hvis du er usikker på hvor du skal legge inn en UNIX-eller Linux-spørsmålet, legger den her. Alle UNIX og Linux newbies velkommen!

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
gjør cat recursively på alle filene i en katalog tulip Shell programmering og Skripting 11 05-21-2009 06:24
recursively omdøpe filer catgovind UNIX for Dummies Spørsmål og svar 2 08-20-2008 03:50
endre navn på filen i batch reldb UNIX for Advanced & ekspertbrukere 7 01-14-2008 06:43
endre navn i batch kathy18 Shell programmering og Skripting 3 03-09-2005 09:47
List filer Recursively roberthawke UNIX for Dummies Spørsmål og svar 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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 06-26-2009
.. Chris .. ..Chris.. is offline
Registrert bruker
  
 

Bli Dato: juni 2009
Innlegg: 4
Exclamation Batch endre navn recursively

Jeg ønsker å erstatte flere understrekingstegn med bindestrek, men jeg har 26.000 filer for å endre navn. De er alle i en filstruktur og flere sub-kataloger.

Det ville være mye enklere hvis jeg hadde et skript til å gjøre det. Her er noen eksempler på filnavn:

Eksempel 1
books/horrors/small/books_horrors_small_0000000386.jpg

Gi nytt navn til

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

Eksempel 2
books/comedy/small/books_comedy_small_0000001687.jpg

Gi nytt navn til

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

Det er 26.000 som ser similer til det og er alle i ulike kataloger.

Det eneste jeg trenger å gjøre er å erstatte alle understrekingstegn _ med bindestrek --
  #2 (permalink)  
Old 06-26-2009
rakeshawasthi rakeshawasthi is offline
Registrert bruker
  
 

Bli Dato: Aug 2004
Location: India
Innlegg: 379
Prøvde du noe? Atleast bør du.
nedenstående koden vil fungere, men du prøver å skrive for loop for dette, atleast.

Code:
 sed 's/_/-/g'

  #3 (permalink)  
Old 06-26-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: Sep 2006
Innlegg: 2557

Code:
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
}'


Sist endret av ghostdog74; 06-26-2009 på 03:17..
  #4 (permalink)  
Old 07-01-2009
.. Chris .. ..Chris.. is offline
Registrert bruker
  
 

Bli Dato: juni 2009
Innlegg: 4
Batch File Rename Recursively - Glimrende, nå Slik på katalognavn?

ghostdog74 løsning nedenfor er strålende, og fungerte bra.

Følge opp spørsmålet:

Hvordan gjøre de samme ting, men bare på filen mapper i den samme filen mappetre (recursively)?

DougABC123


Sitat:
Originally Posted by ghostdog74 View Post
Code:
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

Hugseliste

Tags
satsvise endre erstatte _ --

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 03:09.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0