The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > UNIX for dummyer Spørgsmål & svar
.
google unix.com



UNIX for dummyer Spørgsmål & svar Hvis du ikke ved, hvor man skal sende en UNIX-eller Linux-spørgsmål, efter det her. Alle UNIX og Linux newbies velkommen!

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
gør katten rekursivt på alle filer i en mappe Tulip Shell Programmering og Scripting 11 05-21-2009 06:24 PM
rekursivt omdøbe filer catgovind UNIX for dummyer Spørgsmål & svar 2 08-20-2008 03:50 AM
omdøbe filen i batch reldb UNIX for Advanced & Ekspertsøgning Brugere 7 01-14-2008 06:43 PM
omdøbe i batch kathy18 Shell Programmering og Scripting 3 03-09-2005 09:47 AM
Liste filer rekursivt roberthawke UNIX for dummyer Spørgsmål & svar 9 06-24-2002 07:19 PM

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øg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 06-26-2009
.. Chris .. ..Chris.. is offline
Registreret Bruger
  
 

Join Date: Jun 2009
Stillinger: 4
Exclamation Batch omdøbe rekursivt

Jeg vil gerne erstatte flere understregninger med bindestreger men jeg har 26.000 filer omdøbe. De er alle i en filstruktur og flere sub-mapper.

Det ville være meget enklere, hvis jeg havde et script til at gøre det. Her er nogle prøver af filnavne:

Eksempel 1
books/horrors/small/books_horrors_small_0000000386.jpg

Omdøb til

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

Eksempel 2
books/comedy/small/books_comedy_small_0000001687.jpg

Omdøb til

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

Der er 26.000 filer, der ser similer til dette og er alle i forskellige mapper.

Det eneste, jeg skal gøre, er at erstatte alle de understregningstegn _ med bindestreger --
  #2 (permalink)  
Old 06-26-2009
rakeshawasthi rakeshawasthi is offline
Registreret Bruger
  
 

Join Date: Aug 2004
Beliggenhed: Indien
Posts: 379
Har du prøve noget? Atleast bør du.
nedenstående kode vil arbejde, men du forsøger at skrive til loop til dette, atleast.

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

  #3 (permalink)  
Old 06-26-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Sep 2006
Stillinger: 2558

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


Sidst redigeret af ghostdog74; 06-26-2009 på 03:17 AM..
  #4 (permalink)  
Old 07-01-2009
.. Chris .. ..Chris.. is offline
Registreret Bruger
  
 

Join Date: Jun 2009
Stillinger: 4
Batchfilen Omdøb rekursivt - Brilliant, Nu Sådan om mappenavnene?

ghostdog74's løsning nedenfor er BRILLANT og fungeret godt.

Opfølgning spørgsmål:

Sådan gør nøjagtigt den samme ting, men kun på den fil mapper i den samme fil mappetræ (rekursivt)?

DougABC123


Citat:
Oprindeligt Indsendt af 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

Bogmærker

Tags
batch omdøbe erstatte _ --

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 10:54 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0