GNU에는 널 문자로 파일 이름을 종료하는 옵션이 find
있습니다 . -print0
단, 다음과 같은 경우에는 이 옵션을 사용할 수 없습니다.POSIXfind
.
GNU 매뉴얼 페이지의 플래그 find
아래에는 -print
다음과 같이 나와 있습니다.
출력을 다른 프로그램으로 파이핑
find
하고 검색 중인 파일에 개행 문자가 포함될 가능성이 높은 경우 .-print0
대신 이 옵션을 사용하는 것을 진지하게 고려해야 합니다
이것이 나에게 보이는 것은 -print0
GNU가 개행을 사용하여 파일 경로를 특별히 처리하기 위해 도입한 방식입니다.
POSIX를 사용하거나 두 번째 POSIX 명령으로 파이프하는 것 외에 GNU 옵션용 POSIX에는 -print0
어떤 대안이 있습니까 ?find
답변1
find ... -exec sh -c 'printf "%s\0" "$@"' - {} +
간단 find ... -exec printf '%s\0' {} +
하게도 작동하지만 이는 분명히 printf
쉘에 내장된 실행 파일이 아닌 독립 실행형 실행 파일을 사용하게 됩니다. 이것이 다른 영향을 미치는지는 잘 모르겠습니다.