2014-02-11 2 views
0

아래의 한 줄짜리 라이너를 이해하는 데 도움이 될만한 사람이 있습니까? 이 xargs를가 왜이 한 줄짜리 xargs의 복제 목적

find | xargs grep 'patt' -sl | xargs -L1 sed 's/patt/repl/g' 

는 존재가 결합 될 수없는 이유, xargs를 -L에도 man 페이지는 말한다 : 나는 해석 할 수 없습니다입니다

-L max-lines: Use at most max-lines nonblank input lines per command line. Trailing blanks cause an input line to be logically continued on the next input line. Implies -x 

.

답변

1

첫 번째 xargs-l 옵션을 grep에 사용합니다.이 옵션을 사용하면 패턴과 일치하는 파일의 이름 만 인쇄 할 수 있습니다. 따라서 이것은 find이 나열하는 모든 파일을 입력으로 받아 패턴을 포함하는 파일로 필터링합니다.

두 번째 xargs은 각 파일에 대해 sed을 실행하여 패턴을 바꾸기로 바꿉니다.

+0

** xargs -L1 **의 목적은 무엇입니까? –

+1

모든 파일 이름을 단일 명령 줄에 추가하는 대신 각 파일 이름에 대해 명령을 한 번씩 실행합니다. 왜 프로그래머가 그렇게했는지 모르겠다. 각 파일에 대해 새로운'sed' 명령을 시작할 이유가 없다. – Barmar