bash 错误查找:-printf:未知的主要或运算符

Joo*_*zty 9 find

我列出了我电脑中的所有文件。

FILES=$(find . -type f -name '*' -printf "%s/%f\n" | sort -n)
Run Code Online (Sandbox Code Playgroud)

输出应该是:

"size/file_name"
56872/file.txt
98566/test
1000254/foo
Run Code Online (Sandbox Code Playgroud)

我的电脑给我错误

find: -printf: unknown primary or operator
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗?

Tho*_*key 8

-printf选项不在POSIX find. 它是 GNU 的一个功能find,例如在 Linux 上。

未显示您正在使用的特定实现;它可能是没有扩展的 POSIX。例如,它不在FreeBSDOSX中。

如果没有它,您可以使用一些替代方案,例如(它不会处理嵌入的空白等,但对您的工具做出很少的假设):

find . -type f -exec ls -ld {} \; | awk '{ gsub("^.*/","",$9); printf "%s/%s\n", $5, $9; }'
Run Code Online (Sandbox Code Playgroud)

有了有关可用工具的更多信息,(通常)可以改进解决方案。