最大的文件

时间:2016-03-19 12:37:41

标签: unix dash-shell

我尝试在目录中打印最大的文件,但我无法解释为什么我得到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 ..

1 个答案:

答案 0 :(得分:0)

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

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

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

Accoridng to 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选项以显示外观尺寸。