Rekursiv 'Find og Erstat' i Bash/Zsh: Trin-for-Trin Guide

Hvordan kan man udføre en rekursiv 'find og erstat' ved brug af en shell som bash eller zshell, så alle forekomster af 'foo' erstattes med 'bar' i alle filer i denne mappe og dens undermapper?

For at udføre en rekursiv 'find og erstat' i Bash eller Zsh, naviger til den ønskede mappe og brug kommandoen `find . -type f -exec sed -i 's/foo/bar/g' {} +`.

Sådan udfører du en rekursiv 'find og erstat' i Bash eller Zsh

For at udføre en rekursiv 'find og erstat' i alle filer i en mappe og dens undermapper ved brug af en shell som Bash eller Zsh, kan du følge disse trin:

  1. Åbn din terminal.
  2. Naviger til den mappe, hvor du vil udføre operationen:
cd /sti/til/din/mappe
  1. Brug følgende kommando til at finde og erstatte alle forekomster af 'foo' med 'bar' i alle filer rekursivt:
find . -type f -exec sed -i 's/foo/bar/g' {} +

Her er en forklaring på, hvad hver del af kommandoen gør:

  • find . -type f: Finder alle filer (-type f) i den aktuelle mappe (angivet med .) og dens undermapper.
  • -exec: Udfører en kommando på hver fil, der findes.
  • sed -i 's/foo/bar/g': Bruger sed til at erstatte alle forekomster af 'foo' med 'bar' i hver fil. Flaget -i betyder, at ændringerne gemmes direkte i filerne.
  • {}: Pladsholder for hver fil, der findes af find-kommandoen.
  • +: Angiver, at sed-kommandoen skal anvendes på flere filer ad gangen for at forbedre ydeevnen.

Bemærk: Denne kommando vil ændre alle filer i den angivne mappe og dens undermapper. Sørg for at tage en backup af dine filer, før du kører kommandoen, hvis du er usikker på resultatet.