1

ディレクトリ内の最大のファイルを印刷しようとしましたが、なぜ 726491 ではなく 768 になるのか説明できません。$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 ..
4

1 に答える 1

0

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-A FreeBSD では、見た目のサイズを表示するオプションを指定する必要があります。

于 2016-03-19T12:46:18.370 に答える