GNU find 的 -print0 的 POSIX 替代品

GNU find 的 -print0 的 POSIX 替代品

GNUfind可以-print0选择以空字符终止文件名。但是,此选项在以下情况下不可用POSIXfind

在 GNU 手册页的标志find-print,它说:

如果您将 的输出传输find到另一个程序中,并且您正在搜索的文件极有可能包含换行符,那么您应该认真考虑使用该-print0选项而不是-print.

这对我来说是-print0GNU 引入的专门处理带有换行符的文件路径的方法。

POSIX 中对于 GNU-print0选项有什么替代方案,仅使用 POSIXfind或通过管道传输到第二个 POSIX 命令?

答案1

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

简单地find ... -exec printf '%s\0' {} +也可以工作,尽管这显然会使用独立的printf可执行文件而不是 shell 的内置文件。我不确定这是否会产生其他影响。

相关内容