Sök i .html och ersätt med mappnamn

Permalänk

Sök i .html och ersätt med mappnamn

Hallå alla kunniga.

Jag sitter med ett litet knivigt problem.

Jag har 2000 olika mappar med ett html-dokument i varje mapp.
Koden ser exakt likadana ut för dokumentet i mapp nr 1 som det gör i mapp nr 2000.

I html-dokumentet så finns det ett par olika stycken där det står "abc123".
Det jag skulle vilja göra är att på ett smidigt sätt söka igenom alla html-dokument i alla mappar och ersätta stycket "abc123" med namnet på mappen som dokumentet ligger i.

Så säg att mapp nr 1 heter 01_01_01, så ersätts "abc123" i det html-dokumentet i den mappen med "01_01_01".

Går det att lösa med några magiska rader i kommandotolken eller med något program, eller är jag helt körd?

Värt att nämna är att jag är helt grön när det kommer till att koda hemsidor.
Verkligen, jag kan ingenting... Det är inte jag som gjort dokumentet från första början, men det är min uppgift att ändra allting så det stämmer.

Har försökt googla men utan någon vidare framgång.
Men om någon kan peka mig i rätt riktning så är bara det ett stort steg framåt.

Tack på förhand!

Visa signatur

Details is everything, the rest is just details.

[Bygglogg] Fullskalig radiostyrd R2D2: https://www.sweclockers.com/galleri/11953-radiostyrd-r2d2-byg...

Permalänk
Medlem

Notepad++ ska kunna göra det.

https://superuser.com/questions/1003790/how-to-find-and-repla...

Edit: Läste för snabbt, du vill ju ha in katalognamnen i dem, det är jag lite mer osäker på om NPP kan. Lämnar iaf kvar posten då det kanske hjälper dig på vägen.

Skickades från m.sweclockers.com

Visa signatur

Intel Core i7 6700K | Gigabyte Z170X-UD3 | Corsair Vengeance LPX 16GB DDR4 2400Mhz | EVGA GTX 980Ti Hybrid | Samsung 950 PRO 256GB | Noctua NH-D15 | EVGA G2 750 | Fractal Design Define R5

Permalänk
Permalänk
Medlem

Program: Sublime 3

* Öppna Sublime, välj "Arkiv -> Öppna mapp"
* CTRL-SHIFT-F
* Sök på abc123 i ruta 1.
* Skriv in ersättnign i ruta 2.
* Skriv in *.html i ruta 3.

Klicka på "Replace all".

Nu ersätter du abc123 i alla html filer i mappen och dess undermappar med det du skrivit in i ruta 2.
Lägg märke till att du kan även aktivera regex & case-sensetivity i nedre högra hörnet.

MVh

Visa signatur

i5-8600k, 64GB 3200Mhz, Asus 3080Ti, Samsung 960 PRO 512GB, 2x Predator 27" IPS 1440p G-Sync 144Hz
- Citera gärna för svar! -

Permalänk
Medlem

@DeepSilence:
`for file in $(find . -name *.html); do FOLDER_NAME=$(basename "$(dirname "$file")"); sed -i "s/abc123/$FOLDER_NAME/" $file; done`

Förutsätter osx eller linux, alt bash eller mingw för windows.

Permalänk
Skrivet av Zajin:

Notepad++ ska kunna göra det.

https://superuser.com/questions/1003790/how-to-find-and-repla...

Edit: Läste för snabbt, du vill ju ha in katalognamnen i dem, det är jag lite mer osäker på om NPP kan. Lämnar iaf kvar posten då det kanske hjälper dig på vägen.

Skickades från m.sweclockers.com

Har kikat lite på Notepad++, och vad jag kunnat luska fram så verkar det begränsat när det kommer till just det att ersätta med mappnamn. MEN jag kan ju ha missat något också, ska lura vidare. Tack

Skrivet av Mordin:

Program: Sublime 3

* Öppna Sublime, välj "Arkiv -> Öppna mapp"
* CTRL-SHIFT-F
* Sök på abc123 i ruta 1.
* Skriv in ersättnign i ruta 2.
* Skriv in *.html i ruta 3.

Klicka på "Replace all".

Nu ersätter du abc123 i alla html filer i mappen och dess undermappar med det du skrivit in i ruta 2.
Lägg märke till att du kan även aktivera regex & case-sensetivity i nedre högra hörnet.

MVh

Sublime verkar vara vad jag söker! Om jag fattat det rätt... Kunde åtminstone söka i alla html-dokument och hitta det jag vill ändra. Det jag måste lista ut är bara hur jag får dit mappnamnet med hjälp av regex.

Om det är någon som vet på rak arm hur man löser det skulle jag vara otroligt tacksam då jag har ganska stor tidspress. Men jag gör ett försök att googla lite på det och se om det dyker upp något. Tack

Även detta ser ut som det skulle kunna funka. Ska undersöka vidare! Tack!

Visa signatur

Details is everything, the rest is just details.

[Bygglogg] Fullskalig radiostyrd R2D2: https://www.sweclockers.com/galleri/11953-radiostyrd-r2d2-byg...

Permalänk
Skrivet av 7487:

@DeepSilence:
`for file in $(find . -name *.html); do FOLDER_NAME=$(basename "$(dirname "$file")"); sed -i "s/abc123/$FOLDER_NAME/" $file; done`

Förutsätter osx eller linux, alt bash eller mingw för windows.

Det där flög rakt över huvudet på mig... Haha.
Har du lust att utveckla det något så att jag förstår lite mer?

Visa signatur

Details is everything, the rest is just details.

[Bygglogg] Fullskalig radiostyrd R2D2: https://www.sweclockers.com/galleri/11953-radiostyrd-r2d2-byg...

Permalänk
Medlem
Skrivet av DeepSilence:

Har kikat lite på Notepad++, och vad jag kunnat luska fram så verkar det begränsat när det kommer till just det att ersätta med mappnamn. MEN jag kan ju ha missat något också, ska lura vidare. Tack

Sublime verkar vara vad jag söker! Om jag fattat det rätt... Kunde åtminstone söka i alla html-dokument och hitta det jag vill ändra. Det jag måste lista ut är bara hur jag får dit mappnamnet med hjälp av regex.

Om det är någon som vet på rak arm hur man löser det skulle jag vara otroligt tacksam då jag har ganska stor tidspress. Men jag gör ett försök att googla lite på det och se om det dyker upp något. Tack

Även detta ser ut som det skulle kunna funka. Ska undersöka vidare! Tack!

uff, med namnet på mappen html filen ligger i, det har jag dock inte gjort i sublime xD

Visa signatur

i5-8600k, 64GB 3200Mhz, Asus 3080Ti, Samsung 960 PRO 512GB, 2x Predator 27" IPS 1440p G-Sync 144Hz
- Citera gärna för svar! -

Permalänk
Medlem

Om du vill göra det i Powershell

$files = Get-ChildItem . *.html -Recurse foreach ($file in $files) { (Get-Content $file.PSPath) | Foreach-Object { $_ -replace "abc123", $file.Directory.Name } | Set-Content $file.PSPath }

Beskrivning av vad den gör:

Hämta alla filer som slutar på .html i nuvarande mapp För alla dessa filer Hämta innehållet i filen och skicka vidare I innehållet från filen ersätt abc123 med mappens namn och skicka vidare Spara det uppdaterade innehållet i filen

Knyckt nästa rakt av från följande svar på stackoverflow.

Samt kom ihåg att ta backup innan du kör koden om jag skulle ha gjort något fel.

Permalänk
Inaktiv
Skrivet av DeepSilence:

Det där flög rakt över huvudet på mig... Haha.
Har du lust att utveckla det något så att jag förstår lite mer?

$(find . -name *.html) -> skapa en lista med alla html filer.
for file in -> gå igenom listan, kalla nuvarande file för file.
do FOLDER_NAME=$(basename "$(dirname "$file")") -> spara undan en variabel med namnet på mappen för filen vi tittar på nu.
sed -i "s/abc123/$FOLDER_NAME/" $file ersätt texten abc123 i filen som vi tittar på nu med variabeln vi sparade undan tidigare.

Permalänk
Skrivet av johho:

Om du vill göra det i Powershell

$files = Get-ChildItem . *.html -Recurse foreach ($file in $files) { (Get-Content $file.PSPath) | Foreach-Object { $_ -replace "abc123", $file.Directory.Name } | Set-Content $file.PSPath }

Beskrivning av vad den gör:

Hämta alla filer som slutar på .html i nuvarande mapp För alla dessa filer Hämta innehållet i filen och skicka vidare I innehållet från filen ersätt abc123 med mappens namn och skicka vidare Spara det uppdaterade innehållet i filen

Knyckt nästa rakt av från följande svar på stackoverflow.

Samt kom ihåg att ta backup innan du kör koden om jag skulle ha gjort något fel.

Tog backup, testade den kod du skrev och allt funkar som det ska!
Enormt tacksam för all hjälp!
Känns som att det är dags att faktiskt försöka lära sig lite sånt här på egen hand nu.

Skrivet av anon81912:

$(find . -name *.html) -> skapa en lista med alla html filer.
for file in -> gå igenom listan, kalla nuvarande file för file.
do FOLDER_NAME=$(basename "$(dirname "$file")") -> spara undan en variabel med namnet på mappen för filen vi tittar på nu.
sed -i "s/abc123/$FOLDER_NAME/" $file ersätt texten abc123 i filen som vi tittar på nu med variabeln vi sparade undan tidigare.

Stort tack även här för förklaring av tidigare inlägg.
Även om jag inte använde just detta just nu så är det bra att få det förklarat så att till och med jag förstår någorlunda

Ni har verkligen räddat kvällen. Stort tack allesammans!

Visa signatur

Details is everything, the rest is just details.

[Bygglogg] Fullskalig radiostyrd R2D2: https://www.sweclockers.com/galleri/11953-radiostyrd-r2d2-byg...