파일 크기를 표시하는 간단한 도우미 함수를 작성하고 있습니다.
지금까지의 코드는 다음과 같습니다.
find . -type f -size +10M -printf "%f -> %s B\n"
내가 얻는 결과는 다음과 같습니다.
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
그러나 파일 크기를 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
답변1
최소한 GNU 기반 시스템에서는 원하는 형식을 사용 stat
하고 얻을 수 있어야 합니다 . 예를 들면 다음과 같습니다.numfmt
find . -type f -size +10M -printf "%f -> " -exec sh -c '
stat -c "%s" "$1" | numfmt --to-unit=1048576 --format="%.0f MB"
' sh {} \;
MB 또는 MiB가 필요한지 여부에 따라 --to-unit=1048576
변경하십시오 .--to-unit=1000000
답변2
ast-open 구현에 액세스할 수 있는 경우 ls
:
find . -type f -size +10M -exec ls -ldh --format='%(name)s -> %(size)dB' {} +
MiB
, GiB
, TiB
... 접미사는 적절한 경우에 사용됩니다 .
의 경우 zsh
모든 시스템에서(내장 기능만 사용) MiB만(가장 가까운 값으로 반올림됨):
zmodload zsh/stat
stat -LnA info +size -- **/*(D.LM+10)
for f s ($info) printf '%s -> %.0fMiB\n' $f $(($s / 1048565.))
답변3
게임은 끝났고 @steeldriver가 승리했습니다.+1;-), 하지만 다른 방식(어쩌면 더 간단할까요?)을 사용하겠습니다.
$ find . -type f -size +10M -printf "%f\0%s\n" | awk -F'\0' '{printf("%s -> %.0f MB\n", $1,$2/1048576)}'