it-swarm-vi.tech

Làm cách nào để sắp xếp đầu ra du -h theo kích thước

Tôi cần phải có được một danh sách đầu ra du người có thể đọc được.

Tuy nhiên, du không có tùy chọn "sắp xếp theo kích thước" và đường ống đến sort không hoạt động với cờ có thể đọc được của con người.

Ví dụ: đang chạy:

du | sort -n -r 

Xuất ra mức sử dụng đĩa được sắp xếp theo kích thước (giảm dần):

du |sort -n -r
65108   .
61508   ./dir3
2056    ./dir4
1032    ./dir1
508     ./dir2

Tuy nhiên, chạy nó với cờ người có thể đọc được, không sắp xếp đúng:

du -h | sort -n -r

508K    ./dir2
64M     .
61M     ./dir3
2.1M    ./dir4
1.1M    ./dir1

Có ai biết cách sắp xếp du -h theo kích cỡ?

1029
Tom Feiner

Kể từ GNU coreutils 7.5 được phát hành vào tháng 8 năm 2009, sort cho phép tham số -h, Cho phép các hậu tố số của loại được tạo bởi du -h:

du -hs * | sort -h

Nếu bạn đang sử dụng một loại không hỗ trợ -h, Bạn có thể cài đặt GNU Coreutils. Ví dụ: trên Mac OS X cũ hơn:

brew install coreutils
du -hs * | gsort -h

Từ sortthủ công :

-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)

1444
ptman
du | sort -nr | cut -f2- | xargs du -hs
89
cadrian

@Doumund Leeder, một câu trả lời nữa: Sắp xếp đầu ra có thể đọc được của con người từ du -h bằng cách sử dụng một công cụ khác. Giống như Perl!

du -h | Perl -e 'sub h{%h=(K=>10,M=>20,G=>30);($n,$u)=shift=~/([0-9.]+)(\D)/;
return $n*2**$h{$u}}print sort{h($b)<=>h($a)}<>;'

Chia thành hai dòng để phù hợp với màn hình. Bạn có thể sử dụng nó theo cách này hoặc biến nó thành một lớp lót, nó sẽ hoạt động theo cách khác.

Đầu ra:

4.5M    .
3.7M    ./colors
372K    ./plugin
128K    ./autoload
100K    ./doc
100K    ./syntax

EDIT: Sau một vài vòng golf tại PerlMonks , kết quả cuối cùng là như sau:

Perl -e'%h=map{/.\s/;99**(ord$&&7)-$`,$_}`du -h`;[email protected]{sort%h}'
62
Adam Bellaire

Có một công cụ vô cùng hữu ích mà tôi sử dụng được gọi là ncd được thiết kế để tìm các thư mục và tệp sử dụng đĩa cao phiền phức đó và xóa chúng. Đó là bảng điều khiển dựa trên, nhanh và nhẹ và có các gói trên tất cả các bản phân phối chính.

57
neutral
du -k * | sort -nr | cut -f2 | xargs -d '\n' du -sh
44
chrisharris.

Theo như tôi có thể thấy bạn có ba lựa chọn:

  1. Thay đổi du để sắp xếp trước khi hiển thị.
  2. Thay đổi sort để hỗ trợ kích thước của con người để sắp xếp số.
  3. Đăng quá trình đầu ra từ sắp xếp để thay đổi đầu ra cơ bản để con người có thể đọc được.

Bạn cũng có thể làm du -k và sống với kích thước trong KiB.

Đối với tùy chọn 3, bạn có thể sử dụng tập lệnh sau:

#!/usr/bin/env python

import sys
import re

sizeRe = re.compile(r"^(\d+)(.*)$")

for line in sys.stdin.readlines():
    mo = sizeRe.match(line)
    if mo:
        size = int(mo.group(1))
        if size < 1024:
            size = str(size)+"K"
        Elif size < 1024 ** 2:
            size = str(size/1024)+"M"
        else:
            size = str(size/(1024 ** 2))+"G"

        print "%s%s"%(size,mo.group(2))
    else:
        print line
21
Douglas Leeder

Tôi cũng gặp vấn đề đó và tôi hiện đang sử dụng một cách giải quyết:

du -scBM | sort -n

Điều này sẽ không tạo ra các giá trị tỷ lệ, nhưng luôn tạo ra kích thước tính bằng megabyte. Điều đó ít hơn hoàn hảo, nhưng đối với tôi nó tốt hơn là không có gì (hoặc hiển thị kích thước theo byte).

20
Joachim Sauer

Tìm thấy bài đăng này nơi khác. Do đó, tập lệnh Shell này sẽ làm những gì bạn muốn mà không cần gọi du trên mọi thứ hai lần. Nó sử dụng awk để chuyển đổi các byte thô thành định dạng có thể đọc được. Tất nhiên, định dạng hơi khác nhau (mọi thứ được in chính xác đến một chữ số thập phân).

#/bin/bash
du -B1 | sort -nr  |awk '{sum=$1;
hum[1024**3]="G";hum[1024**2]="M";hum[1024]="K";
for (x=1024**3; x>=1024; x/=1024){
        if (sum>=x) { printf "%.1f%s\t\t",sum/x,hum[x];print $2;break
}}}'

Chạy cái này trong thư mục .vim Của tôi mang lại:

4.4M            .
3.6M            ./colors
372.0K          ./plugin
128.0K          ./autoload
100.0K          ./syntax
100.0K          ./doc

(Tôi hy vọng 3,6 triệu phối màu không quá mức.)

19
Adam Bellaire

Phiên bản này sử dụng awk để tạo các cột bổ sung cho các khóa sắp xếp. Nó chỉ gọi du một lần. Đầu ra sẽ trông giống hệt du.

Tôi đã chia nó thành nhiều dòng, nhưng nó có thể được kết hợp lại thành một lớp.

du -h |
  awk '{printf "%s %08.2f\t%s\n", 
    index("KMG", substr($1, length($1))),
    substr($1, 0, length($1)-1), $0}' |
  sort -r | cut -f2,3

Giải trình:

  • BEGIN - tạo một chuỗi để lập chỉ mục để thay thế 1, 2, 3 cho K, M, G để nhóm theo đơn vị, nếu không có đơn vị nào (kích thước nhỏ hơn 1K), thì không có kết quả khớp nào và số 0 được trả về (hoàn hảo! )
  • in các trường mới - đơn vị, giá trị (để làm cho sắp xếp alpha hoạt động chính xác, nó không có đệm, độ dài cố định) và dòng gốc
  • lập chỉ mục ký tự cuối cùng của trường kích thước
  • kéo ra phần số của kích thước
  • sắp xếp kết quả, loại bỏ các cột thêm

Hãy thử mà không có lệnh cut để xem nó đang làm gì.

Đây là phiên bản sắp xếp trong tập lệnh AWK và không cần cut:

du -h |
   awk '{idx = sprintf("%s %08.2f %s", 
         index("KMG", substr($1, length($1))),
         substr($1, 0, length($1)-1), $0);
         lines[idx] = $0}
    END {c = asorti(lines, sorted);
         for (i = c; i >= 1; i--)
           print lines[sorted[i]]}'

Dưới đây là một ví dụ cho thấy các thư mục ở dạng tóm tắt nhỏ gọn hơn. Nó xử lý khoảng trắng trong thư mục/tên tệp.

% du -s * | sort -rn | cut -f2- | xargs -d "\n" du -sh

53G  projects
21G  Desktop
7.2G VirtualBox VMs
3.7G db
3.3G SparkleShare
2.2G Dropbox
272M apps
47M  incoming
14M  bin
5.7M rpmbuild
68K  vimdir.tgz
15
slm

sắp xếp tệp theo kích thước tính bằng MB

du --block-size=MiB --max-depth=1 path | sort -n
12
lukmansh

Tôi có một trình bao bọc python đơn giản cho du được gọi là dutop . Lưu ý rằng chúng tôi (những người duy trì coreutils) đang xem xét thêm chức năng để sắp xếp để sắp xếp trực tiếp đầu ra "con người".

9
pixelbeat

Có một cái khác:

$ du -B1 | sort -nr | Perl -MNumber::Bytes::Human=format_bytes -F'\t' -lane 'print format_bytes($F[0])."\t".$F[1]'

Tôi bắt đầu thích Perl. Bạn có thể phải làm một

$ cpan Number::Bytes::Human

đầu tiên. Đối với tất cả các tin tặc Perl ngoài kia: Có, tôi biết rằng phần sắp xếp cũng có thể được thực hiện trong Perl. Có lẽ là phần du, quá.

9
0x89

Đoạn trích này không biết xấu hổ được lấy từ 'Jean-Pierre' từ http://www.unix.com/Shell-programming-scripting/32555-du-h-sort.html . Có cách nào tôi có thể tín dụng anh ta tốt hơn?

du -k | sort -nr | awk '
     BEGIN {
        split("KB,MB,GB,TB", Units, ",");
     }
     {
        u = 1;
        while ($1 >= 1024) {
           $1 = $1 / 1024;
           u += 1
        }
        $1 = sprintf("%.1f %s", $1, Units[u]);
        print $0;
     }
    '
8
Bozojoe

Sử dụng cờ "-g"

 -g, --general-numeric-sort
              compare according to general numerical value

Và trên thư mục/usr/local của tôi tạo ra kết quả như thế này:

$ du |sort -g

0   ./lib/site_Ruby/1.8/rubygems/digest
20  ./lib/site_Ruby/1.8/rubygems/ext
20  ./share/xml
24  ./lib/Perl
24  ./share/sgml
44  ./lib/site_Ruby/1.8/rubygems/package
44  ./share/mime
52  ./share/icons/hicolor
56  ./share/icons
112 ./share/Perl/5.10.0/YAML
132 ./lib/site_Ruby/1.8/rubygems/commands
132 ./share/man/man3
136 ./share/man
156 ./share/Perl/5.10.0
160 ./share/Perl
488 ./share
560 ./lib/site_Ruby/1.8/rubygems
604 ./lib/site_Ruby/1.8
608 ./lib/site_Ruby
7
Mick T

Tìm thấy cái này trên mạng ... có vẻ hoạt động tốt

du -sh * | tee /tmp/duout.txt | grep G | sort -rn ; cat /tmp/duout.txt | grep M | sort -rn ; cat /tmp/duout.txt | grep K | sort -rn ; rm /tmp/duout.txt
5
Peter Nunn

Đây là phương pháp đơn giản tôi sử dụng, sử dụng tài nguyên rất thấp và mang lại cho bạn những gì bạn cần:

du --max-depth=1 | sort -n | awk 'BEGIN {OFMT = "%.0f"} {print $1/1024,"MB", $2}'

0 MB ./etc
1 MB ./mail
2 MB ./tmp
123 MB ./public_html
4
JacobN

Tôi đã học được awk từ việc pha chế ví dụ này ngày hôm qua. Phải mất một thời gian, nhưng nó rất vui, và tôi đã học được cách sử dụng awk.

Nó chỉ chạy du một lần và nó có đầu ra tương tự như du -h

du --max-depth=0 -k * | sort -nr | awk '{ if($1>=1024*1024) {size=$1/1024/1024; unit="G"} else if($1>=1024) {size=$1/1024; unit="M"} else {size=$1; unit="K"}; if(size<10) format="%.1f%s"; else format="%.0f%s"; res=sprintf(format,size,unit); printf "%-8s %s\n",res,$2 }'

Nó hiển thị số dưới 10 với một dấu thập phân.

4
marlar

Một số khác:

du -h | Perl -e'
@l{ K, M, G } = ( 1 .. 3 );
print sort {
    ($aa) = $a =~ /(\w)\s+/;
    ($bb) = $b =~ /(\w)\s+/;
    $l{$aa} <=> $l{$bb} || $a <=> $b
  } <>'
4
Dimitre Radoulov

du -cka --max-sâu = 1/var/log | sắp xếp -rn | đầu -10 | awk '{in ($ 1)/1024, "MB", $ 2'}

3
Patrick

Nếu bạn cần xử lý không gian, bạn có thể sử dụng như sau

 du -d 1| sort -nr | cut -f2 | sed 's/ /\\ /g' | xargs du -sh

Tuyên bố sed bổ sung sẽ giúp giảm bớt các vấn đề với các thư mục có tên như Hỗ trợ ứng dụng

2
Chealion

Võngà:

du -sk /var/log/* | sort -rn | awk '{print $2}' | xargs -ia du -hs "a"
1
weeheavy

Có rất nhiều câu trả lời ở đây, nhiều trong số đó là trùng lặp. Tôi thấy ba xu hướng: chuyển qua cuộc gọi du thứ hai, sử dụng mã Shell/awk phức tạp và sử dụng các ngôn ngữ khác.

Đây là một giải pháp tuân thủ POSIX bằng cách sử dụng dawk sẽ hoạt động trên mọi hệ thống.

Tôi đã thực hiện một cách tiếp cận hơi khác, thêm -x để đảm bảo chúng tôi ở trên cùng một hệ thống tệp (Tôi chỉ cần thao tác này khi tôi thiếu dung lượng ổ đĩa, vậy tại sao lại loại bỏ những thứ tôi đã gắn trong cây này FS cây hoặc di chuyển và symlinked back?) và hiển thị các đơn vị không đổi để giúp phân tích cú pháp trực quan dễ dàng hơn. Trong trường hợp này, tôi thường chọn không để sắp xếp để tôi có thể thấy rõ hơn cấu trúc phân cấp.

Sudo du -x | awk '
  $1 > 2^20 { s=$1; $1=""; printf "%7sG%s\n", sprintf("%.2f",s/2^21), $0 }'

(Vì đây là đơn vị nhất quán, nên bạn có thể nối thêm | sort -n nếu bạn thực sự muốn sắp xếp ed kết quả.)

Điều này lọc ra bất kỳ thư mục nào có nội dung (tích lũy) không vượt quá 512MB và sau đó hiển thị kích thước tính bằng gigabyte. Theo mặc định, du sử dụng kích thước khối 512 byte (vì vậy điều kiện của awk là 220 khối là 512MB và 2 khối của nó21 ước số chuyển đổi các đơn vị thành GB - chúng ta có thể sử dụng du -kx với $1 > 512*1024s/1024^2 để dễ đọc hơn cho con người). Trong điều kiện awk, chúng tôi đặt s thành kích thước để chúng tôi có thể xóa nó khỏi dòng ($0). Cái này giữ lại dấu phân cách (được thu gọn vào một khoảng trắng), vì vậy cuối cùng %s đại diện cho một khoảng trắng và sau đó là tên của thư mục tổng hợp. %7s căn chỉnh tròn %.2f Kích thước GB (tăng lên %8s nếu bạn có> 10TB).

Không giống như hầu hết các giải pháp ở đây, điều này hỗ trợ đúng các thư mục có khoảng trắng trong tên của chúng (mặc dù every giải pháp, bao gồm cả giải pháp này một, sẽ xử lý sai tên thư mục chứa ngắt dòng).

1
Adam Katz

Một giải pháp awk khác -

du -k ./* | sort -nr | 
awk '
{split("KB,MB,GB",size,",");}
{x = 1;while ($1 >= 1024) 
{$1 = $1 / 1024;x = x + 1} $1 = sprintf("%-4.2f%s", $1, size[x]); print $0;}'


[jaypal~/Desktop/Reference]$ du -k ./* | sort -nr | awk '{split("KB,MB,GB",size,",");}{x = 1;while ($1 >= 1024) {$1 = $1 / 1024;x = x + 1} $1 = sprintf("%-4.2f%s", $1, size[x]); print $0;}'
15.92MB ./Personal
13.82MB ./Personal/Docs
2.35MB ./Work Docs
1.59MB ./Work Docs/Work
1.46MB ./Personal/Raa
584.00KB ./scan 1.pdf
544.00KB ./Personal/Resume
44.00KB ./Membership.xlsx
16.00KB ./Membership Transmittal Template.xlsx
1
user96753

http://dev.yorhel.nl/ncd

lệnh: ncdu

Điều hướng thư mục, sắp xếp (tên và kích thước), vẽ đồ thị, con người có thể đọc được, v.v ...

1
Adam Eickhoff

Tôi đã sử dụng giải pháp được cung cấp bởi @ptman, nhưng một sự thay đổi máy chủ gần đây khiến nó không còn khả thi. Thay vào đó, tôi đang sử dụng tập lệnh bash sau:

#!/bin/bash
# File: duf.sh
# list contents of the current directory by increasing 
#+size in human readable format

# for some, "-d 1" will be "--maxdepth=1"
du -k -d 1 | sort -g | awk '
{
if($1<1024)
    printf("%.0f KB\t%s",$1,$2);
else if($1<1024*1024)
    printf("%.1f MB\t%s",$1/1024,$2);
else
    printf("%.1f GB\t%s",$1/1024/1024,$2);
}'
1
Keith Yoder

du -s * | sắp xếp -nr | cắt -f2 | xargs du -sh

1
ageek2remember

Đây là một ví dụ

du -h /folder/subfolder --max-depth=1 | sort -hr

Trả về:

233M    /folder/subfolder
190M    /folder/subfolder/myfolder1
15M     /folder/subfolder/myfolder4
6.4M    /folder/subfolder/myfolder5
4.2M    /folder/subfolder/myfolder3
3.8M    /folder/subfolder/myfolder2

Bạn cũng có thể thêm | head -10 để tìm top 10 hoặc bất kỳ số lượng thư mục con nào trong thư mục được chỉ định.

1
ode2k

Đây là bí danh tôi có trong .profile của tôi

bí danh du = 'Sudo du -xh --max-sâu = 1 | sắp xếp -h '

sắp xếp -h là những gì thực sự giúp ở đây cho câu hỏi.

Một tùy chọn hữu ích khác là du -x để ở trên cùng một hệ thống tệp; Ngoài ra Sudo giúp không thấy lỗi nếu có những thư mục không thể đọc được trên thế giới. Ngoài ra, tôi luôn luôn làm du --max-height = 1, sau đó đi sâu hơn nữa, v.v.

0
Tagar

Một kịch bản du khác!

Vì đã có rất nhiều câu trả lời, tôi chỉ đăng kịch bản của riêng mình ở đó. Tôi sử dụng từ hơn tám năm nay.

Điều này có thể bằng cách chạy bởi

/somepath/rdu.sh [-b] [/somepath] [minSize]

ở đâu

  • cờ tùy chọn -b bảo sử dụng đếm byte thay vì chặn đếm
  • tùy chọn path làm đối số thứ nhất, thư mục hiện tại nếu mặc định.
  • nếu không có đối số thứ hai nào được đưa ra, kích thước tối thiểu sẽ được in là 256Mb.

Đầu ra có thể trông như sau:

\___   3.01G                 21.67%                .cache
|   \___   1.37G                 45.54%                mozilla
|   |   \___   1.37G                100.00%                firefox
|   |   |   \___ 581.71M                 41.48%                billiethek.default
|   |   |   |   \___ 522.64M                 89.85%                cache2
|   |   |   |   |   \___ 522.45M                 99.96%                entries
...

Có kịch bản:

#!/bin/bash

if [ "$1" == "-b" ] ;then
    shift
    units=(b K M G T P)
    duargs="-xbs"
    minsize=${2:-$((256*1024**2))}
else
    units=(K M G T P)
    duargs="-xks"
    minsize=${2:-$((256*1024))}
fi

humansize() {
    local _c=$1 _i=0
    while [ ${#_c} -gt 3 ] ;do
        ((_i++))
        _c=$((_c>>10))
    done
    _c=$(( ( $1*1000 ) >> ( 10*_i ) ))
    printf ${2+-v} $2 "%.2f%s" ${_c:0:${#_c}-3}.${_c:${#_c}-3} ${units[_i]}
}
percent() {
    local p=000$((${1}00000/$2))
    printf ${3+-v} $3 "%.2f%%" ${p:0:${#p}-3}.${p:${#p}-3}
}

device=$(stat -c %d "${1:-.}")
printf -v sep "%16s" ""

rdu() {
    local _dir="$1" _spc="$2" _crt _siz _str _tot _pct
    while read _siz _crt;do
        if [ "$_crt" = "total"  ]; then
            _tot=$_siz
        else
            [ "$_tot" ] || _tot=$_siz
            if [ $_siz -gt $minsize ];then
                humansize $_siz _str
                percent $_siz $_tot _pct
                printf "%s\___ %7s%s%7s%s%s\n" \
                    "$_spc" $_str "$sep" $_pct "$sep" "${_crt##*/}"
                [ -d "$_crt" ] &&
                [ $(stat -c %d "$_crt") -eq $device ] &&
                rdu "$_crt" "|   $_spc"
            fi
        fi
    done < <(
        find "$_dir" -mindepth 1 -maxdepth 1 -xdev \
            \( -type f -o -type d \) -printf "%D;%p\n" |
            sed -ne "s/^${device};//p" |
            tr \\n \\0 |
            xargs -0 du ${duargs}c |
            sort -nr
    )
}

rdu "${1:-.}"

Và không, tôi sẽ không đăng chúng trên Git***.xxx.

Bạn có thể hiển thị chúng ở đó hoặc tải tập lệnh ở đó.

0
F. Hauri

Đây là giải pháp của tôi, một tập lệnh bash đơn giản chỉ gọi du một lần và chỉ hiển thị cho bạn các thư mục có kích thước 1 MB hoặc lớn hơn:

#!/bin/env bash
# Usage: my_du.sh [subdirectory levels]
#   For efficiency, only calls "du" once, and stores results in a temp file
#   Stephen Becker, 2/23/2010

if [ $# -gt 0 ]; then
# You may prefer, as I do, to just summarize the contents of a directory
# and not view the size of its subdirectories, so use this:
    du -h --max-depth $1 > temp_du_file
else
    du -h > temp_du_file
fi


# Show all directories of size > 1 GB:
cat temp_du_file | grep "^\([0-9]\|\.\)\+G" | sort -nr
# Show all directories of size > 1 MB:
cat temp_du_file | grep "^\([0-9]\|\.\)\+M" | sort -nr

rm temp_du_file
0
Stephen

Ít nhất là với các công cụ thông thường, điều này sẽ khó khăn vì định dạng các số có thể đọc được của con người (lưu ý rằng sắp xếp một "công việc tốt" ở đây vì nó sắp xếp các số - 508, 64, 61, 2, 2 - nó chỉ không thể sắp xếp các số dấu phẩy động với một số nhân bổ sung).

Tôi sẽ thử theo cách khác - sử dụng đầu ra từ "du | sort -n -r" và sau đó chuyển đổi các số thành định dạng có thể đọc được bằng một số tập lệnh hoặc chương trình.

0
schnaader

Những gì bạn có thể thử là:

for i in `du -s * | sort -n | cut -f2`
do
  du -h $i;
done

Mong rằng sẽ giúp.

0
Christian Witts
du | sort -nr | awk '{ cmd = "du -h -d0 "$2"| cut -f1"; cmd | getline human; close(cmd); print human"\t"$2 }'
0
Nathan de Vries

Giải pháp sau đây tương tự như bản gốc của cadrian tuy nhiên điều này sẽ chỉ chạy 2 lệnh đối lập với một du cho mỗi thư mục trong cây.

du -hs `du |sort -g |cut -f2- `

Tuy nhiên, giải pháp của Cardrian mạnh mẽ hơn vì các giải pháp trên sẽ không hiệu quả đối với các cây đông dân vì nó có thể vượt quá giới hạn về kích thước của các đối số được truyền cho du

0
Steve Weet

Dựa vào logic trong cái này một lớp , tôi đã viết một tập lệnh cung cấp đầu ra du (1) có thể đọc được của con người. Khác với yêu cầu -h cờ cho khả năng đọc của con người, nó không yêu cầu các lệnh không tương thích POSIX khác.

Nó có sẵn tại https://github.com/pleappleappleap/sort-human-d .

0
Tripp Kinetics

Tại sao không ném một chiếc mũ khác vào vòng .... đó là một câu hỏi cũ, nhưng đây là một ví dụ (hầu hết) kịch bản Shell thuần túy (fwiw) - tức là chỉ bash và không có Perl/python/awk/etc. Vì vậy, theo nghĩa đó, có thể nó cung cấp một cái gì đó mới cho cuộc thảo luận (hoặc không). Nó tính toán kích thước tệp chỉ một lần, nhưng in bằng nhiều đơn vị khác nhau (tùy chọn của tôi). (Phiên bản chưa được đơn giản hóa bao gồm các getopts loại trừ "GB" nếu không mong muốn.)

#!/bin/bash

printf -- ' %9s %9s %9s       %-30s\n' 'K'        'M'        'G'        'Path'
printf -- ' %9s %9s %9s       %-30s\n' '--------' '--------' '--------' '-----------'
du -sk "[email protected]" | while read val; do
    file=$(echo "$val" | cut -f2-)
    size_k=$(echo "$val"  | cut -f1)
    printf ' %9s %9s %9s       %-30s\n' \
          ${size_k}  \
          $(( size_k / 1024 ))  \
          $(( size_k / 1024 / 1024 ))  \
          "$file"
  done | sort -n
0
michael

Sắp xếp theo thứ tự giảm dần.

du -s ./* | sort -n| cut -f 2-| xargs du -sh {}
0
Peter Nduati