utilizați SED recursiv în linux? (Administrarea sistemului, Linux, Unix, Shell, Sed)

John a intrebat.

Vreau să implementez următoarea comandă în mod recursiv

sed -i 's/href="1//href="/1//g' ./*

astfel încât să înlocuiască toate href=”1 cu href=”/1 în toate subdirectoarele. Există un indicator pe care îl pot adăuga la această comandă pentru a obține rezultatele dorite?

2 răspunsuri
topdog
find . -type f -print0 | xargs -0 sed -i 's/href="1//href="/1//g'

Comentarii

  • Ar trebui să fie -0 – se potrivește cu -print0 în find – a editat postul. –  > Por James.
  • Am găsit că find . -type f | xargs sed -i 's/href="1//href="/1//g' poate produce aceleași rezultate. Vor exista capcane în această abordare? –  > Por John.
Pr0methean

Conform https://stackoverflow.com/a/5130044/833771, dacă directorul țintă este o rădăcină Git sau SVN, ar trebui să utilizați:
find . -not ( -name .svn -prune -o -name .git -prune ) -type f -print0 | xargs -0 sed -i 's/href="1//href="/1//g'