Solaris find 不支持 printf 操作

Solaris find 不支持 printf 操作

任何人都可以提供与以下命令相同的 Solaris 命令

$ find . -type f -printf '%f,%h\n'

运行代码后,我收到“错误选项 printf find:[-H | -L] 路径列表谓词列表错误”

Solaris UNIX 环境不支持 Printf

请参阅以下链接了解更多信息:

https://askubuntu.com/questions/818478/how-to-create-a-new-file-which-provides-filename-and-its-source-directory-inform/818480

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,除非您单独安装了它。

你可以在 Solaris 上安装 GNU find

或者,您可以重写脚本以仅使用可移植功能。没有通用的翻译方法-printf:不同的说明符将需要不同的工具。对于%f%h,这很容易,因为它们只是文件名的一部分。如果文件名位于 shell 变量 中x,则可以使用参数扩展构造来提取基本名称(删除前缀*/)和目录名称(删除后缀/*)。

find . -type f -exec sh -c 'for x do printf %s,%s\\n "${x##*/}" "${x%/*}"; done' sh {} +

相关内容