Как узнать все размеры ГБ каталогов в домашнем каталоге?

Да, цикл for— хорошее решение вашей задачи.

for i in abc def ghi jkl; do
    unzip applications/"$i".zip -d applications/"$i"/
done

Или та же команда в одной строке для использования из командной строки вместо скрипта:

for i in abc def ghi jkl; do unzip applications/"$i".zip -d applications/"$i"/; done

Кавычки вокруг $iне нужны для значений из вашего примера, но лучше использовать кавычки, если вы не уверены, что у вас никогда не будет значений с пробелами или другими специальными символами.

0
28.03.2020, 12:47
2 ответа

Общая сумма составит

du -s.

и размеры отдельных папок (и возможных файлов)

du -s *.*

только папки

du -s */ .*/
1
19.03.2021, 02:31

Вы можете избежать xargs:

du -sc */

Использование xargsбыло бы полезно только в том случае, если у вас есть несколько тысяч каталогов, чтобы избежать ошибки «слишком длинная командная строка» (, но тогда не будет полной суммы, а будут только частичные суммы для каждого вызова duпо xarg).

Уловка для других команд, чтобы избежать неправильного -разбора имен файлов с помощью xargs, разделяйте их нулями вместо пробелов или переводов строки:

printf '%s\0' * | xargs -0 du -s 

(printfперебирает свои аргументы и печатает их с NUL в конце, а xargразделяет NUL из-за опции -0). Это предполагает, что printfявляется оболочкой, построенной -в (bash ), использование двоичного кода будет иметь обычное ограничение длины строки.

2
19.03.2021, 02:31

Теги

Похожие вопросы