2

У меня есть эта структура в моей файловой системе Linux:

/ папки
... subfolder1
...... темп /
... subfolder2
...... темп /
... subfolder3
...... темп /
... subfolder4
...... темп /
... subfolder5
...... темп /

И я хочу получить общее дисковое пространство, которое используют все временные / папки. Я предполагаю, что это что-то с df или du, но не знаю, как этого добиться. Мне нужна только сумма всех временных / каталогов, а не других папок или файлов, которые могут быть в подпапках. Любая идея?

Спасибо!!

3 ответа3

6

Вы можете использовать команду ниже, чтобы получить размер каждого временного каталога и общий итог:

du -csh /folder/*/temp
0

Мне нравится решение Сиаваша, оно предоставляет общий размер на диске (в приращениях блока).

Вот количество байтов файлов с использованием find и awk:

find /folder -type f -wholename '*/temp/*' -printf '%s\n' | awk '{ total += $1 } END { print "Total:", total }'
0

Попробуй это:

#!/bin/bash
totalsize=0
for i in $(du -b | grep "/temp$" | cut -f1); do
        totalsize=$((totalsize + i))
done

totalsize=$(echo $totalsize | awk '{sum=$1; hum[1024**3]="Gb";hum[1024**2]="Mb"; hum[1024]="Kb"; for (x=1024**3; x>=1024; x/=1024){ if (sum>=x) { printf "%.2f %s\n",sum/x,hum[x];break }}}')

echo "Total size: $totalsize"

Он ищет каждый путь к папке, который заканчивается на /temp, и показывает только размер в байтах. Для каждого найденного размера добавьте его к итоговому значению, а затем перед печатью результатов используйте awk для преобразования байтов в удобочитаемый формат.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .