find . -type f -name '*.c' -exec cat {} \; | sed '/^\s*#/d;/^\s*$/d;/^\s*\/\//d' | wc -l
누구든지 그 의미를 설명할 수 있나요?
답변1
설명하다:
find . -type f -name '*.c'
.c
- 이름과 확장자에 기호가 포함된 현재 디렉터리의 모든 파일을 반복적으로 찾습니다 . 보다man find
-exec cat {} \;
- 이전 단계에서 찾은 파일의 내용을 가져옵니다. -exec 구문을 참조하세요.-exec command {} +
sed '/^\s*#/d;/^\s*$/d;/^\s*///d'
- 여러 유형의 "댓글"(또는 유사한 콘텐츠)을 제거합니다. 이 섹션은 3개 부분으로 구성되어 있습니다 ;
.
/^\s*#/d
- 줄 시작(^
), 0, 1 이상의 공백(\s*
) 및#
기호.//d
- 일치하는 문자열을 삭제합니다./^\s*$/d
- 빈 줄. 이전 섹션과 동일하지만$
줄 끝을 나타내는 기호가 있음/^\s*\/\//d
- 앞에 0,1 이상의 공백이 있는 두 개의 슬래시(\/\/
, - 인용 슬래시를 위한 백슬래시)가 있는 행과 일치합니다.\
wc -l
- 코드 라인 수 계산
답변2
find . -type f -name '*.c'
.c로 끝나는 파일 찾기
-exec cat {} \;
명령을 실행하여 파일을 인쇄합니다. (실제로는 의미가 없습니다. 파일 이름을 파이프 대신 cat
인수로 직접 전달할 수 있습니다 .)sed
| sed '/^\s*#/d;/^\s*$/d;/^\s*\/\//d'
파일에서 전처리기 지시문, 빈 줄 및 주석을 제거합니다. | wc -l
명령에서 해당 부분을 제거하면 주석 없이 파일을 볼 수 있습니다.
| wc -l
주석을 필터링한 후 표시되는 총 줄 수를 계산합니다.
답변3
무슨 뜻인지 설명해 보세요. 좋아요 내 생각에 이것은 누군가가 명령 사이에 표준 출력을 연결하는 것을 좋아한다는 것을 의미한다고 생각합니다.
모든 것이 간단한 것으로 대체 될 수 있다고 생각합니다.
find . -type f -name '*.c' -exec grep -cv -e '^\s*#' -e '^\s*$' -e '^\s*//' {} \;