xargs 사용

2308 단어 shellfindxargswc
얼마 전에 자신의 코드 줄 수 를 찾 았 을 때 "find. - name"*. cs "| xargs wc - l"그러나 xargs 가 여기 서 의 역할 에 대해 잘 모 르 겠 습 니 다. 인터넷 자 료 는 주로 xargs 의 다음 과 같은 역할 을 말 하기 때 문 입 니 다. 1. 다른 명령 에 매개 변 수 를 전달 하 는 필터 2. xargs 는 한 줄 또는 여러 줄 의 텍스트 입력 을 다른 형식 으로 바 꿀 수 있 습 니 다. 예 를 들 어 여러 줄 이 한 줄 로 바 뀌 고 한 줄 이 여러 줄 로 바 뀌 는 것 을 방지 합 니 다. 3. 넘 침 을 방지 하고 한 번 에 표준 입력 에서 일부 값 만 읽 을 수 있 습 니 다. 하지만 저 는 여기 있 습 니 다.넘 치 는 문제 가 없습니다. man 매 뉴 얼 에 따 르 면 xargs 의 역할 은?"xargs 는 stdin 에서 모든 항목 을 읽 고 공백 문자 나 단행자 원 으로 구분 하여 stdin 의 항목 을 arguments 로 구분 합 니 다. 공백 문자 로 구분 되 기 때문에 일부 파일 이름 이나 다른 의미 의 명사 에 공백 문자 가 포함 되 어 있 을 때 xargs 는 오심 할 수 있 습 니 다. 특수 문 자 를 처리 하려 면 - 0 매개 변 수 를 사용 하여 처리 해 야 합 니 다."
직접 예: 현재 디 렉 터 리 에 SmallInsert. cs 파일 만 있 습 니 다. 그 내용 은 "using System", using System. collections. Generic, using System. Linq, using System. Text; "로 시작 합 니 다. 다음 명령 을 수행 합 니 다.
테스트
find . -name "*.cs" | less

결 과 는 다음 과 같 습 니 다:
./SmallInsert.cs

다음은 xargs 를 더 해서 시도 해 보 겠 습 니 다.
find . -name "*.cs" | xargs less

결 과 는 다음 과 같 습 니 다:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
........

xargs 를 추가 하지 않 을 때 find 결 과 를 출력 할 수 있 습 니 다. xargs 를 추가 하면 find 에서 찾 은 cs 파일 의 내용 을 표시 합 니 다.
여기 서 xargs 와 파이프 가 직접 전달 하 는 중요 한 차 이 를 알 수 있다.
파 이 프 는 "앞의 표준 출력 을 뒤의 표준 입력 으로 합 니 다". xargs 는 "표준 입력 을 명령 의 매개 변수 로 합 니 다".
그래서 find . -name "*.cs" | xargs less 최종 적 으로 less./SmallInsert. cs 로 바 뀌 면 SmallInsert. cs 의 내용 을 나타 내 고 find . -name "*.cs" | less 파 이 프 를 이용 하여 결 과 를 직접 나타 낸다.
결론.
find, xargs 와 wc 를 공동으로 사용 하여 코드 줄 수 를 찾 는 방법 은 다음 과 같 습 니 다. find: 모든 요구 에 부합 되 는 cs 파일 경 로 를 찾 습 니 다. xargs: cs 파일 경 로 를 명령 매개 변수 로 wc. wc: wc - l 에 find 가 들 어 오 는 매개 변 수 를 추가 합 니 다. 예 를 들 어 'wc - l./SmallInsert. cs' 와 같이 이 cs 파일 에 모두 몇 줄 의 코드 가 있 는 지 찾 을 수 있 습 니 다.
여기 xargs 에 대한 소개 글 이 있 습 니 다. 좋 습 니 다.

좋은 웹페이지 즐겨찾기