![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
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 -- |
|
||||
|
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.. |
|
||||
|
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:
|
![]() |
| Hugseliste |
| Tags |
| satsvise endre erstatte _ -- |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|