Z GNU sed:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Z OSX sed:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
Pierwsze polecenie find
wyszukuje wszystkie standardowe pliki (nie katalogi, potoki itp.), Drukuje je oddzielone \0
(tak, że nazwy plików mogą zawierać spacje, znaki nowej linii itp.).
Drugie polecenie xargs
odczytuje wynik find
, pobiera listę opartą na separatorze (z \0
powodu -0
), wywołuje sed -i [...]
z dodanymi parametrami z listy ( sed
będzie wywoływana wiele razy, jeśli jest dużo plików, ponieważ maksymalna długość parametrów jest ograniczona w każde wywołanie).
W sed
modyfikuje poleceń w miejscu ( -i
).
Jeśli chodzi o /KeyWord/d
to, usunie wiersze zawierające wyrażenie regularne KeyWord
.
Powinieneś nauczyć sed
się poprawnie rozumieć składnię (prostą, ale niezwykłą) i odnieść się do odpowiednich stron podręcznika, aby uzyskać więcej informacji na temat zaangażowanych tutaj narzędzi.
I jak lubię promować zsh
, rozwiązanie z rozszerzonymi globami:
sed -i /KeyWord/d **/*(.)