xargs 프로그램은 유닉스 명령 줄의 최대 길이로 인한 한계를 설명하기 위해 일괄 처리로 나눕니다. 하위 명령을 한 번에 하나씩 실행하는 것보다 훨씬 효율적이지만, 긴 입력 목록의 경우 각 "실행"이 문제를 일으키지 않을 정도로 충분히 짧은 시간 동안 명령을 실행합니다.
이 때문에 xargs를 실행해야하는 "배치"당 하나의 출력 라인이 표시 될 가능성이 큽니다. 당신이 찾을 수 있기 때문에
유용한/재미있는 매뉴얼 페이지는 온라인 여기에서 찾을 수 있습니다 : http://unixhelp.ed.ac.uk/CGI/man-cgi?xargs이
다른 한 가지주의해야 할 (이 귀하의 게시물 또는 내 오해에 오타가있을 수 있습니다) 인 "* .txt"는 이스케이프 처리되지 않은/인용 된 것입니다. 즉, 당신은 일치 ... 대신에 * 전달보다 당신은 아마 명령 줄은 파일 이름의 목록으로 * 확장 될 수있는
find . -name \*.txt | xargs du -hc
의 차이를 원하는
find . -name *.txt | xargs du -hc
이 find, 패턴으로 사용합니다.
find . -name "*.txt" -exec ls -lt {} \; | awk -F " " 'BEGIN { sum=0 } { sum+=$5 } END { print sum }'
흠, 확인. 나는 시도했다 : 찾기. -name * .txt | xargs -n 100000 du -hc 하지만 작동하지 않는 것 같습니다. 더 적은 부분 수가 있습니다. 시도 중 찾으십시오. -name * .txt | xargs -L 1000 du -hc '잘 작동하지 않는 것 같습니다. "xargs : 인수 목록이 너무 깁니다"또는 매우 소수의 파일에서만 작동합니다. 다른 의견은 있습니까? 감사! 알렉스 –