Sök och ersätt - byta ut fras mot filens namn. Hur?

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1

Jag har 130 textfiler i en mapp. Jag skulle behöva köra en sök och ersätt på mappens innehåll och leta efter en viss fras "abc123" och ersätta detta med varje fils namn.

Hur kan man göra det?

Så här kan man göra för att söka reda på första uppkomsten av en sträng ("abc123") och ersätta den med filens namn. Kommandot listar alla filer i mappen som har ett suffix på .txt:

for I in *.txt; do ex "$I" <<< %s/abc123/$I/\|wq; done

Kommandot använder kommandoradsvarianten av vim, kallat ex.

Oj tack, det där såg intressant ut!

Jag har 10 förekomster av frasen i varje fil.

Det är en matris med bilder som nu heter abc-1.jpg
Det är en matris med bilder som nu heter abc-2.jpg
osv

Filen heter cykel.html och ersättningen ska således skapa cykel-1.jpg, cykel-2.jpg osv. Då kommer den att hitta bilderna som finns sedan tidigare.

Ok. Något så här då kanske?

for I in *.html; do ex "$I" <<< %s/abc/$(basename "$I" .html)/g\|wq; done

Den ersätter visserligen alla dina "abc" med "filen_utan_html" i hela filen. Det är kanske inte vad du vill?

Jo det ska gå bra. Det är en textfras som inte finns för övrigt.

Då återstår bara en liten detalj... hur får man Terminal att utföra det där på min mapp?

Öppna terminalen, skriv "cd " (ett mellanslag i slutet) och dra in din mapp i terminalfönstret. Tryck enter. Nu har du placerat dig i mappen. Därefter är det att klistra in kommandot från tidigare och trycka enter. Men var snäll och gör en backup först ifall jag fumlat på tangenterna.

Inget fummel alls faktiskt bara perfekt hela vägen!

Snyggt jobbat och tack för hjälpen. Nu slapp jag handknacka det där.

1
Bevaka tråden