最大的文件

The largest file

我试图打印目录中最大的文件,但我无法解释为什么我得到的是 768 而不是 726491。$DIR 是目录,$ext 是文件扩展名。我的脚本应该在破折号中工作。

 find "${DIR}" -type f -name "*.$ext" -exec du -a {} + | 
 sort -n -r | head -n 1 | cut -f1

 768     ./subfolder/test.jpg

 -rw-r--r--  1 username  vti  726491 19 mar 12:46 test.jpg
 drwxr-xr-x  2 username  vti     512 19 mar 12:46 subsubfolder
 drwxr-xr-x  3 username  vti     512 19 mar 12:46 .
 drwxr-xr-x  4 username  vti     512 19 mar 12:46 ..

du,默认情况下将磁盘使用情况显示为块大小(1024 字节/512 字节),而不是以字节为单位。

如果要du打印bytes,需要指定-b(或--bytes)选项:

find "${DIR}" -type f -name "*.$ext" -exec du -a -b {} + | ..
                                                 ^^

根据DU(1):

   --apparent-size
          print apparent sizes,  rather  than  disk  usage;  although  the
          apparent  size is usually smaller, it may be larger due to holes
          in ('sparse') files, internal  fragmentation,  indirect  blocks,
          and the like

   -B, --block-size=SIZE
          scale  sizes  by  SIZE  before printing them; e.g., '-BM' prints
          sizes in units of 1,048,576 bytes; see SIZE format below

   -b, --bytes
          equivalent to '--apparent-size --block-size=1'

更新

在不支持 -b 选项的系统上,请改用 -B 1 选项:

find "${DIR}" -type f -name "*.$ext" -exec du -a -B 1 {} + | ..

UPDATE2 在 FreeBSD 中,您需要指定 -A 选项以显示外观大小。