GNUfind
可以-print0
选择以空字符终止文件名。但是,此选项在以下情况下不可用POSIXfind
。
在 GNU 手册页的标志find
下-print
,它说:
如果您将 的输出传输
find
到另一个程序中,并且您正在搜索的文件极有可能包含换行符,那么您应该认真考虑使用该-print0
选项而不是
这对我来说是-print0
GNU 引入的专门处理带有换行符的文件路径的方法。
POSIX 中对于 GNU-print0
选项有什么替代方案,仅使用 POSIXfind
或通过管道传输到第二个 POSIX 命令?
答案1
find ... -exec sh -c 'printf "%s\0" "$@"' - {} +
简单地find ... -exec printf '%s\0' {} +
也可以工作,尽管这显然会使用独立的printf
可执行文件而不是 shell 的内置文件。我不确定这是否会产生其他影响。