GNU findの-print0に対するPOSIXの置換

GNU findの-print0に対するPOSIXの置換

GNUにはNULL文字でファイル名を終了するオプションがfindあります。-print0ただし、次の場合はこのオプションは使用できません。POSIXfind

GNU のマニュアルページのフラグfindの下には-print次のようなものがあります。

出力を別のプログラムにパイピングfindし、検索中のファイルに改行文字が含まれる可能性が高い場合。-print0代わりに、このオプションの使用を真剣に検討する必要があります-print

これが私に見えるのは、-print0GNUが改行を使用してファイルパスを特別に処理するために導入した方法です。

POSIXを使用するか、2番目のPOSIXコマンドにパイプすることに加えて、GNUオプションのPOSIXには-print0どのような代替策がありますか?find

答え1

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

簡単find ... -exec printf '%s\0' {} +に動作しますが、これは明らかにprintfシェルに組み込まれた実行可能ファイルではなく、スタンドアロンの実行可能ファイルを使用します。これが他の影響を与えるかどうかはわかりません。

関連情報