답변:
GNU sed로 :
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
OSX sed로 :
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
첫 번째 명령 find
은 모든 표준 파일 (디렉토리 나 파이프 등이 아님)을 찾아서 구분하여 인쇄합니다 \0
(파일 이름에 공백, 줄 바꿈 등이 포함될 수 있음).
두 번째 명령 xargs
은의 출력을 읽고 find
구분 기호를 기반으로 목록을 가져 옵니다 ( \0
때문에 -0
) sed -i [...]
. 목록에서 추가 된 매개 변수를 사용하여 호출합니다 sed
. 각 호출).
이 sed
명령은 내부 ( -i
)를 수정합니다 .
에 관해서 /KeyWord/d
는 정규 표현식을 포함하는 행을 삭제합니다 KeyWord
.
당신은 배워야 sed
제대로 (단순하지만 특이한) 구문을 이해하고, 여기에 포함 된 도구에 대한 자세한 내용은 해당 맨 페이지를 참조 할 수 있습니다.
그리고 내가 홍보하고 싶을 zsh
때 확장 된 globs가있는 솔루션 :
sed -i /KeyWord/d **/*(.)
s/KeyWord//g
( 모든 줄에 대해 KeyWord
''(빈 문자열)로 대체 ( g
각 줄의 첫 번째 줄뿐만 아니라)