我列出了我电脑中的所有文件。
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)
有什么解决办法吗?
该-printf
选项不在POSIX
find
. 它是 GNU 的一个功能find
,例如在 Linux 上。
未显示您正在使用的特定实现;它可能是没有扩展的 POSIX。例如,它不在FreeBSD或OSX中。
如果没有它,您可以使用一些替代方案,例如(它不会处理嵌入的空白等,但对您的工具做出很少的假设):
find . -type f -exec ls -ld {} \; | awk '{ gsub("^.*/","",$9); printf "%s/%s\n", $5, $9; }'
Run Code Online (Sandbox Code Playgroud)
有了有关可用工具的更多信息,(通常)可以改进解决方案。