xargs -I 옵션

xargs -I 옵션

이것xargs 매뉴얼설명하다:

-I 바꾸기-str
--replace[=replace-str]
-i[replace-str]
초기 인수의 바꾸기-str 항목을 표준 입력에서 읽은 이름으로 바꿉니다.

이 부분이 이해가 안 돼요:with names read from standard input.

예를 들면 다음과 같습니다.

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo | wc -l

위의 코드는 디렉터리 내의 총 파일/디렉터리 수를 계산합니다.

누군가 나에게 이것을 설명해 줄 수 있습니까?

답변1

"표준 입력에서 읽은 이름 사용"은 xargs표준 입력에서 전달된 데이터를 가져와서 분할하고 이를 사용하여 인수에 지정된 명령을 실행하는 것을 의미합니다. 기본적으로 공백이나 줄 바꿈으로 분할되며 echo한 번에 가능한 한 많은 인수로 실행됩니다.

-0예제의 옵션은 xargs입력을 공백이나 줄 바꿈 대신 null 바이트로 분할하도록 지시합니다. 공백이나 개행 문자가 포함된 파일 이름을 올바르게 처리하기 위해 finds 와 함께 사용됩니다.-print0

-I옵션은 새 명령줄이 작성되는 방식을 변경합니다. 한 번에 원하는 만큼 매개변수를 추가하는 대신 xargs입력에서 이름을 한 번에 하나씩 가져와서 지정된 토큰( {}여기)을 찾아 해당 이름으로 바꿉니다.

귀하의 예에서는 {}주어진 명령 템플릿에 존재하지 않으므로 xargs실제로 주어진 각 파일 이름에 대해 인수 없이 한 번씩 실행하도록 xargs지시 됩니다 . 이 콘텐츠를 보려면 다음을 삭제하세요 .echofindwc

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo

일련의 빈 줄이 표시됩니다. 이것을 다음과 결합하십시오.

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo {}

그리고

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 echo

그리고

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0

더 나은 이해를 얻기 위해.

관련 정보