파이프를 사용하는 이 명령이 작동하지 않는 이유는 무엇입니까?

파이프를 사용하는 이 명령이 작동하지 않는 이유는 무엇입니까?

find . | cat모든 파일 이름 인쇄는 작동하지만 find . | file -i모든 파일 MIME 유형 표시에는 작동하지 않는 이유는 무엇입니까 ?

find .의 출력 과 의 입력이 있으므로 작동하면 안 되나요 file -i?

(이것이 어리석은 질문이라면 죄송합니다. 저는 bash를 사용하는 초보자이고 이것을 설명할 수 있는 다른 질문을 찾을 수 없습니다.)

답변1

파이프를 사용하면 오른쪽에 있는 명령이 stdin 채널의 데이터를 읽습니다. 이 file명령을 사용하려면 파일이 stdin의 데이터가 아닌 명령줄 인수여야 합니다.

이것이 바로 xargs명령의 용도입니다. stdin에서 읽고 데이터를 명령줄 인수로 제공합니다.

find . | xargs file -i

또는, 다음 -f에 대한 옵션을 사용하십시오 file.

find . | file -i -f -

자세한 내용은 매뉴얼 페이지를 읽어보세요.

관련 정보