Jeg har en rasende masse HTML-filer, hvor der forekommer links/stier til eksterne lydfiler, som ligger på Amazon S3. Nu flytter jeg alle disse filer hjem til egen server og skal derfor have linkene ændret.
Eksempel:
https://s3-eu-west-1.amazonaws.com/danacord.com/800-899/865/soundbites/865-01.mp3
skal omdøbes til:
./sound/DACOCD 865/865-01.mp3 o.s.v.
Den første del af stien er jo nem nok; her skal jo bare slettes https://s3-eu-west-1.amazonaws.com/danacord.com/, men så begynder det at blive svært. /800-899/865/soundbites/ skal jo bare slettes, men jeg har både /300-399/, /400-499/ o.s.v.
P.S. Der er et varierende antal lydfiler i hver mappe - alle fortløbende nummereret som f.eks. 865-01, 865-02, 865-03 o.s.v.
det kunne nemt gøres ved at skrive nedenstående i terminalen, mens du befinder dig i "soundbites" mappen.
sed s/https.*soundbites/.\\/sound/g .
det den gør er, at den vil søge i arbejdsmappen efter filer der indeholder streng der starter med "https" og slutter med "soundbites"... så vil den arstate alt imellem med "./sound"
som altid, lav en test mappe struktur, og test det igennem.
Jeg forstår ikke helt. I under-under-mappen "soundbites" i et selvstændigt hierarki ligger selve lydfilerne og der står jo ikke noget om "https ...". Det gør der i html-filerne, som ligger et helt andet sted.
Jeg har lavet en testmappe med en af de html-filer hvor den nævnte sti forekommer. Jeg har kørt din kommando på denne mappe, men det har ingen effekt; filen forbliver urørt.
P.S. Skal det sidste punktum med?
'sed' skal selvfølgelig afvikles der hvor html filer er. det er en brøler fra min side.
den kommando skal helt med, den sidste . indikere kig efter alle filer "her" i nuværende mappe.
her er en eksample på brug af sed med og uden destruktiv ændring. :D
cat test.txt456
indhold af test.txt er '456'
sed 's/456/123/g' test.txt123
nu har vi med 'sed' erstattet 456 med 123, men ikke ændret i filen, kun vist resultat ...
cat test.txt456ved at vise indhold af filen med cat kan vi se stadig den har 456 som indhold...
men, nedenstående kommando er mere farlig ... :)
sed -i '' 's/456/123/g' test.txt
nu kører vi "destruktiv" sed kommando med -i '' hvor den vil erstatte streng '456' med '123'.
cat test.txt123
tada... nu har vi rettet i test.txt filen...
I mappen "temp > test" har jeg oprettet en tekstfil med indholdet "456". Jeg åbner terminalen i "temp > test" og paster din kommando ind, men får en fejl:
Kurts-iMac:test kh$ sed 's/456/123/g' test.txt123
sed: test.txt123: No such file or directory
Bbedit kan klare det.
Jeg har BBedit, men hvad mener du at den kan klare? Hvad, hvor, hvordan ...?
Tja Bash er da meget rart i ny og næ, det er bare trist alle OS X versioner kommer med noget gammelt lort, udover Catalina der std kommer med ZSH, hvilket man alligevel burde skifte til, bash = 2007 . Det er alligevel et stykke tid siden :)
Og hvorfor pokker benytter du dog ikke en af de mange fine renamers der findes, det tager ikke lang tid at sætte sig ind i brugen af en sådanne... Ca lige så lang tid som det tager dig at forstå shell scripts :P?
Jeg har bugt Renamer i mange år, den kan klare mange ting på en gang. Ved ikke om den kan bruges.
Towle skrev:I mappen "temp > test" har jeg oprettet en tekstfil med indholdet "456". Jeg åbner terminalen i "temp > test" og paster din kommando ind, men får en fejl:
Kurts-iMac:test kh$ sed 's/456/123/g' test.txt
sed: test.txt123: No such file or directory
det er fordi macnyt slettede nylinie koden... :D det kan palle måske arbejde videre med.
sed 's/456/123/g' test.txt
resultat er 123
Towle skrev:Jeg har BBedit, men hvad mener du at den kan klare? Hvad, hvor, hvordan ...?
den kan vel godt tage en mappe og søge efter en bestemt streng, og erstatte den med noget andet.
jeg har ikke brugt bbedit i 15 år, siden de begyndte at fylde programmet med lort og for hver version den blev langosmmere og langsommere. men mener at huske den kan gøre det på en hel mappe. for hvordan, må andre forklare, for jeg har ikke tænkt mig at installere deres software igen. :D
RPI skrev:Tja Bash er da meget rart i ny og næ, det er bare trist alle OS X versioner kommer med noget gammelt lort, udover Catalina der std kommer med ZSH, hvilket man alligevel burde skifte til, bash = 2007 . Det er alligevel et stykke tid siden :)
Og hvorfor pokker benytter du dog ikke en af de mange fine renamers der findes, det tager ikke lang tid at sætte sig ind i brugen af en sådanne... Ca lige så lang tid som det tager dig at forstå shell scripts :P?
til gengæld skal man ikke have 40 programmer der kan hver sin ting. og så ved man heller ikke hvad de laver mens de bliver brugt. langt det fleste af dem vil alligevel bruge noget lignende til det macos er kommet med. så for mig er det oplagt at lære noget nyt, der er gratis med i macos, end at købe sig til noget der kan have yderst begrænset brugsoverflade.
men sådan er vi forskellige.
Tak for alle indlæg i tråden. Gennem mere end 20 år med denne hjemmeside, har jeg lavet meget manuelt arbejde, så Herre Gud ... 428 varianter af samme søg/erstat gør jeg gerne. Jeg fandt ud af at gøre det i een mappe adgangen med BBedit.
sådan kan man også bruge sin weekend på ... :D
i bbedit, prøv at navigere en mappe opad, og forsøg sig med at søge og erstatte derfra. det burde kunne så gå ned i alle mapper og lave rettelse...
Jow, men så simpelt er det ikke i virkeligheden. Stierne er ens et stykke hen ad vejen, men fra et vist punkt er de forskellige:
Jeg har undermapper som følger:
299-399
400-499
500-599
600-699
700-799
800-899
Under alle disse er der en mappe for hver vare:
299
301
303
305
307
308
309 o.s.v.
I alle disse mapper er der en mappe der hedder "soundbites" og her ligger filerne med fortløbende numre:
800-01.mp3
800-02.mp3
800-03.mp3
800-04.mp3 o.s.v.
Sådan er stierne i mine html-dokumenter skrevet. Eksempel:
https://s3-eu-west-1.amazonaws.com/danacord.com/800-899/865/soundbites/865-01.mp3
altså, det samme filer og struktur, som du havde for nogle måneder siden, hvor der skulle omdøbes i mapper og filer?
hvor komplekst er den html der viser filerne? eller er der tale om links kun?