GNUにはNULL文字でファイル名を終了するオプションがfind
あります。-print0
ただし、次の場合はこのオプションは使用できません。POSIXfind
。
GNU のマニュアルページのフラグfind
の下には-print
次のようなものがあります。
出力を別のプログラムにパイピング
find
し、検索中のファイルに改行文字が含まれる可能性が高い場合。-print0
代わりに、このオプションの使用を真剣に検討する必要があります
これが私に見えるのは、-print0
GNUが改行を使用してファイルパスを特別に処理するために導入した方法です。
POSIXを使用するか、2番目のPOSIXコマンドにパイプすることに加えて、GNUオプションのPOSIXには-print0
どのような代替策がありますか?find
答え1
find ... -exec sh -c 'printf "%s\0" "$@"' - {} +
簡単find ... -exec printf '%s\0' {} +
に動作しますが、これは明らかにprintf
シェルに組み込まれた実行可能ファイルではなく、スタンドアロンの実行可能ファイルを使用します。これが他の影響を与えるかどうかはわかりません。