Лучший способ получить размеры подкаталогов - PullRequest
0 голосов
/ 01 февраля 2019

Я пытался выяснить размеры некоторых подкаталогов в общей папке, и мне было интересно, есть ли там «однострочный», который может это сделать (для всех вас, сумасшедшие ребята из awk) ...

Единственный сбой в моей ситуации - у меня могут не быть разрешения на некоторые подпапки, поэтому размер каталога будет наилучшим, поскольку мы можем получить ответ «отказано в доступе» на рекурсивныйкоманда.

Вот что я придумал:

#!/bin/bash
DIR=/my/shared/folder/*

for d in $DIR
do
    if [ -d $d ]
    then
        dirsize=$(du -sh $d 2>/dev/null | cut -f1)
        echo "$dirsize - $d"
    fi
done

Значение 2>/dev/null важно из-за проблемы с разрешениями, которая может возникнуть, поэтому мы не хотим видеть ошибки.Я также хочу увидеть весь путь, поэтому

Кто-нибудь знает более творческий способ сделать это?Я полагаю, что find в сочетании с awk в некотором объеме может генерировать один вкладыш, необходимый для этого.

1 Ответ

0 голосов
/ 01 февраля 2019

Если вам нужен полный путь, тогда вы можете сделать

du -hs /my/shared/folder/*/

Если вы хотите подавить ошибки из вашего вывода:

du -hs /my/shared/folder/*/ 2>/dev/null

И, как указано Socowi , если вы хотите, чтобы вывод был разделен дефисом вместо табуляции, вы можете манипулировать им с помощью sed:

du -hs /my/shared/folder/*/ 2>/dev/null | sed 's/\t/ - /'
...