![Solaris find 不支持 printf 操作](https://linux22.com/image/93515/Solaris%20find%20%E4%B8%8D%E6%94%AF%E6%8C%81%20printf%20%E6%93%8D%E4%BD%9C.png)
任何人都可以提供与以下命令相同的 Solaris 命令
$ find . -type f -printf '%f,%h\n'
运行代码后,我收到“错误选项 printf find:[-H | -L] 路径列表谓词列表错误”
Solaris UNIX 环境不支持 Printf
请参阅以下链接了解更多信息:
http://explainshell.com/explain?cmd=find+sample+-type+f+-printf+%27%25f%2C%25h%5Cn%27
提前致谢
答案1
该-printf
操作特定于 GNU find,因此它在不运行 GNU find 的平台上不可用。只有非嵌入式 Linux 和 Cygwin 运行 GNU find,除非您单独安装了它。
或者,您可以重写脚本以仅使用可移植功能。没有通用的翻译方法-printf
:不同的说明符将需要不同的工具。对于%f
和%h
,这很容易,因为它们只是文件名的一部分。如果文件名位于 shell 变量 中x
,则可以使用参数扩展构造来提取基本名称(删除前缀*/
)和目录名称(删除后缀/*
)。
find . -type f -exec sh -c 'for x do printf %s,%s\\n "${x##*/}" "${x%/*}"; done' sh {} +