Да, цикл 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
не нужны для значений из вашего примера, но лучше использовать кавычки, если вы не уверены, что у вас никогда не будет значений с пробелами или другими специальными символами.
Общая сумма составит
du -s.
и размеры отдельных папок (и возможных файлов)
du -s *.*
только папки
du -s */ .*/
Вы можете избежать xargs:
du -sc */
Использование xargs
было бы полезно только в том случае, если у вас есть несколько тысяч каталогов, чтобы избежать ошибки «слишком длинная командная строка» (, но тогда не будет полной суммы, а будут только частичные суммы для каждого вызова du
по xarg
).
Уловка для других команд, чтобы избежать неправильного -разбора имен файлов с помощью xargs
, разделяйте их нулями вместо пробелов или переводов строки:
printf '%s\0' * | xargs -0 du -s
(printf
перебирает свои аргументы и печатает их с NUL в конце, а xarg
разделяет NUL из-за опции -0
). Это предполагает, что printf
является оболочкой, построенной -в (bash ), использование двоичного кода будет иметь обычное ограничение длины строки.