如何修改 find 命令中的 -printf "%s \n" 来给我以 MB 为单位而不是字节的大小?

Ale*_*lex 3 bash find shell-script printf

我正在编写一个简单的辅助函数来显示文件的大小:
这是我到目前为止的代码:

find . -type f -size +10M -printf "%f -> %s B\n"
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

clay-banks--Ni2fpLUgRI-unsplash.jpg -> 181794593 B
jake-nackos-_kdX2vPc33U-unsplash.jpg -> 448148323 B
73-738467_nature-wallpapers-high-quality-images-hd-desktop-images.jpg -> 131115725 B
Run Code Online (Sandbox Code Playgroud)

但是,我想以 MB 为单位显示文件大小。

我应该如何修改它,使其像 b 一样工作

clay-banks--Ni2fpLUgRI-unsplash.jpg -> 173 MB
jake-nackos-_kdX2vPc33U-unsplash.jpg -> 427 MB
73-738467_nature-wallpapers-high-quality-images-hd-desktop-images.jpg -> 125 MB
Run Code Online (Sandbox Code Playgroud)

ste*_*ver 6

至少在基于 GNU 的系统上,您应该能够使用statnumfmt获得所需的格式,例如:

find . -type f -size +10M -printf "%f -> " -exec sh -c '
  stat -c "%s" "$1" | numfmt --to-unit=1048576 --format="%.0f MB"
' sh {} \;
Run Code Online (Sandbox Code Playgroud)

根据您需要 MB 还是 MiB--to-unit=1048576进行更改。--to-unit=1000000