GNU find의 -print0에 대한 POSIX 대체

GNU find의 -print0에 대한 POSIX 대체

GNU에는 널 문자로 파일 이름을 종료하는 옵션이 find있습니다 . -print0단, 다음과 같은 경우에는 이 옵션을 사용할 수 없습니다.POSIXfind.

GNU 매뉴얼 페이지의 플래그 find아래에는 -print다음과 같이 나와 있습니다.

출력을 다른 프로그램으로 파이핑 find하고 검색 중인 파일에 개행 문자가 포함될 가능성이 높은 경우 . -print0대신 이 옵션을 사용하는 것을 진지하게 고려해야 합니다 -print.

이것이 나에게 보이는 것은 -print0GNU가 개행을 사용하여 파일 경로를 특별히 처리하기 위해 도입한 방식입니다.

POSIX를 사용하거나 두 번째 POSIX 명령으로 파이프하는 것 외에 GNU 옵션용 POSIX에는 -print0어떤 대안이 있습니까 ?find

답변1

find ... -exec sh -c 'printf "%s\0" "$@"' - {} +

간단 find ... -exec printf '%s\0' {} +하게도 작동하지만 이는 분명히 printf쉘에 내장된 실행 파일이 아닌 독립 실행형 실행 파일을 사용하게 됩니다. 이것이 다른 영향을 미치는지는 잘 모르겠습니다.

관련 정보