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 findwyszukuje 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 xargsodczytuje wynik find, pobiera listę opartą na separatorze (z \0powodu -0), wywołuje sed -i [...]z dodanymi parametrami z listy ( sedbę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 sedmodyfikuje poleceń w miejscu ( -i).
Jeśli chodzi o /KeyWord/dto, usunie wiersze zawierające wyrażenie regularne KeyWord.
Powinieneś nauczyć sedsię 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:
s/KeyWord//g
(substytutyKeyWord
z „” (pusty ciąg znaków),g
dla wszystkich (nie tylko pierwszy na każdej linii).Możesz używać Vima w trybie Ex:
g
globalne wyszukiwanied
usunąćx
Zapisz i zamknijźródło
find: illegal option -- t
, musiałem dodać.
find . -type f -exec ex -sc g/KeyWord/d -cx {} ';'