이 경우 xargs 사용이 실패하는 이유는 무엇입니까?

이 경우 xargs 사용이 실패하는 이유는 무엇입니까?

나는 그 사용법을 이해하려고 노력하고 xargs다음과 같은 실험을 수행했습니다.

ls | xargs | touch

현재 디렉터리의 파일 날짜와 디렉터리를 새로 고치고 싶습니다.

조금 있긴 하지만멍청한, 더 간단한 형식을 사용하여 동일한 효과를 얻을 수 있기 때문입니다.

xargs그것을 읽고 STDIN다른 명령의 매개변수로 변환하는 것 같습니다 ( /bin/echo기본적으로 명령이 지정되지 않은 경우). 제가 뭔가 잘못 이해한 걸까요?

실패했는데 그 이유를 알고 싶습니다.

답변1

다음과 같아야 합니다.

ls | xargs touch

이 명령은 stdin에서 읽은 여러 문자열을 사용하여 xargs명령을 실행합니다. touch귀하의 경우 stdin for는 xargs파이프의 출력 끝입니다 ls.

명령 방법:

ls | xargs | touch

xargs표준 입력에서 문자열(파일 이름)을 읽는 명령은 없습니다. 이 경우에는 xargs각 파일 이름을 인쇄하고 touch표준 입력으로 파일 이름 목록을 얻으세요. 그러나 touch표준 입력에서는 읽지 않으며 인수를 제공하지 않았으므로 다음과 같은 오류 메시지가 인쇄됩니다.

touch: missing file operand
Try `touch --help' for more information.

(귀하의 질문에 이를 언급해야 합니다).

관련 정보