[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]![]() |
![]() |
![]() |
|||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
![]() |
![]() |
![]() |
Rasmus Hammerum skrev: > Jeg ønsker at søge i en mappe med filer og undermapper, hvor jeg så > vil erstatte et ord med et nyt ord. Dette gælder både for mapper, > filnavne samt tekst i filer. Ændringen skal være case-sensitive. Jeg > er ny med linux og kan ikke rigtig få hul på den... Normalt vil man nok dele opgaven op i to dele: a) Omdøbe filer og kataloger. b) Ændre i filer. Hvis vi går ud fra at vi starter i kataloget »rodkatalog« og vil erstatte »et« med »andet«, så kan vi løse delopgaverne sådan her: a) Med kommandoen: find rodkatalog -depth | while read navn; do katalog="$(dirname "${navn}")" fil="$(basename "${navn}")" rettet_filnavn="${fil//et/andet}" if [ "${rettet_filnavn}" != "${fil}" ]; then echo mv -i "${katalog}/${fil}" \ "${katalog}/${rettet_filnavn}" fi done | more (Denne udgave _viser_ dig blot hvad der vil ske. Du skal erstatte »echo mv« med »echo no | mv« for at få omdøbt katalogerne.) Hvis kataloget hedder noget andet end »rodkatalog«, skal du ændre i den første linje. Hvis du vil omdøbe andet end fra »et« til »andet«, skal du ændre i den fjerde linje. b) Med kommandoen: find rodkatalog -type f | while read fil; do ~ if grep -l 'en' "${fil}" 1>/dev/null; then sed -i 's/en/anden/g' "${fil}" \ && echo "Erstattede »en« med »anden« i »${fil}«." fi done | more Jeg har her valgt at lade kommandoen rapportere hvilke filer der er blevet rettet i. Hvis du først vil prøve med en kopi af dine data, så kan du med kommandoen »cp -pr rodkatalog kopi-af-rodkatalog« oprette en kopi af hele det katalog (med underkataloger) du vil arbejde på. Jeg vil foreslå at du læser brugsanvisningerne til de programmer jeg bruger i kommandoerne ovenfor _før_ du satser dine data på dem. Hvis du for eksempel skal bruge brugsanvisningen til »find«, så taster du blot »man find« på kommandolinjen. (»man« er kort for »manual«) man find man dirname man basename man mv man more man grep man sed God fornøjelse, Jacob -- Computere er ikke intelligente. Det er bare noget de tror.
![]() |
![]() |
![]() |
||||||||||||
|
||||||||||||||
![]() | ||||||||||||||
|
||||||||||||||
![]() |
![]() |
![]() |