Как я могу сортировать по численному размеру человека?

16

например, у меня есть команда, которая показывает, сколько занимает папка пространства

du folder | sort -n

он отлично работает, однако я хотел бы иметь удобочитаемую форму.

du -h folder

однако, если я делаю это, чем я не могу сортировать его как числовое.

Как присоединиться к du folder и du -h folder , чтобы просмотреть результат, отсортированный как du folder , но с первым столбцом из du -h folder

P.S. это просто пример. этот метод может быть очень полезен для меня (если возможно)

    
задан UAdapter 17.11.2011 в 18:02
источник

8 ответов

9

Вот более общий подход. Получите выходные данные du folder и du -h folder в двух разных файлах.

du folder > file1
du -h folder > file2

Ключевой частью является следующее: concatenate file1 и file2 строка за строкой, с подходящим разделителем.

paste -d '#' file1 file2 > file3

(если # не отображается в file1 и file2 )

Теперь соберите file3 . Обратите внимание, что это будет сортироваться на основе file1 содержимого и разорвать связи на file2 содержимого. Извлеките соответствующий результат, используя cut :

sort -n -k1,7 file3 | cut -d '#' -f 2

Также посмотрите на man sort для других параметров.

Вы также можете сохранить это как псевдоним для последующего повторного использования. Для этого добавьте нижнюю часть ~/.bashrc :

sorted-du () {
    paste -d '#' <( du "$1" ) <( du -h "$1" ) | sort -n -k1,7 | cut -d '#' -f 2
}

Затем откройте новый сеанс терминала и выполните новый псевдоним:

sorted-du /home
    
ответ дан Prateek 17.11.2011 в 18:56
источник
28

Попробуйте что-то вроде:

du -h folder | sort -h

Альтернативы: -n для численной сортировки

Примечание: опция -h сортировки существует только в более поздних версиях Ubuntu.

    
ответ дан Allu2 17.11.2011 в 18:13
4

Этот ответ действителен для 10.04.4LTS и более низких версий Ubuntu.

К сожалению, точный ответ, который сортирует K M G, сложный и сложный:

Вы можете псевдонимом всей команды du с той, которая сортируется по-человечески, используя этот

alias duf='du -sk * | sort -n | perl -ne '\''($s,$f)=split(m{\t});for (qw(K M G)) {if($s<1024) {printf("%.1f",$s);print "$_\t$f"; last};$s=$s/1024}'\'

, который я нашел здесь

Ссылка

просто cd в папку, которую вы хотели бы знать, затем duf

вы можете добавить этот псевдоним duf в конец вашего /home/user/.profile для создания полуперманта команды duf

результаты:

%pr_e%

Вот почему du -sch /var/* | sort -n не работает в сортировке MKKMMKKMMK

%pr_e%
    
ответ дан Kat Amsterdam 30.08.2012 в 19:30
2

Команда GNU sort имеет следующий параметр:

%co_de%, %co_de% compare human readable numbers (e.g., 2K 1G).

To have this option on BSD/OSX, you can install %co_de% from %co_de% (via %co_de%) and add the bin folder to your %co_de% into your rc files.

Итак, команда будет выглядеть так:

du -ah . | sort -rh | head -20
    
ответ дан kenorb 05.03.2015 в 15:25
0

В последних версиях Ubuntu используйте du -h directory | sort -h .

Я использую форму этого все время для поиска файлов с отсутствием контроля.

    
ответ дан belacqua 05.06.2013 в 00:22
0

Откройте терминал с помощью Ctrl + Alt + t и введите:

  du -sk * | sort -rn 
    
ответ дан rɑːdʒɑ 23.12.2013 в 14:40
0

Тот, который я нашел во всех системах независимо от версии ( sort -h не работает для меня),

du -h $(du * | sort -n | awk '{print $2}')

awk '{print $2}' в основном печатает имена файлов.

    
ответ дан yahiaelgamal 30.03.2014 в 10:55
0

Этот файл обрабатывает имена файлов с пробелами или апострофами и работает в системах, которые не поддерживают xargs -d или sort -h :

du -s * | sort -n | cut -f2 | tr '\n' '
368K    diskmanagementd
392K    racoon
468K    coreaudiod
472K    securityd
660K    sshd
3.6M    php-fpm
' | xargs -0 -I {} du -sh "{}"

, что приводит к:

%pr_e%     
ответ дан Mark Crossfield 23.11.2014 в 20:38