Ответ 1
Вы можете сделать:
du -h your_directory
который даст вам размер вашего целевого каталога.
Если вам нужен короткий вывод, du -hcs your_directory
будет приятным.
Я пытаюсь написать script, который рассчитает размер каталога и размер меньше 10 ГБ, а больше 2 ГБ предпримут какое-то действие. Где мне нужно указать имя моей папки?
# 10GB
SIZE="1074747474"
# check the current size
CHECK="`du /data/sflow_log/`"
if [ "$CHECK" -gt "$SIZE" ]; then
echo "DONE"
fi
Вы можете сделать:
du -h your_directory
который даст вам размер вашего целевого каталога.
Если вам нужен короткий вывод, du -hcs your_directory
будет приятным.
если вы просто хотите увидеть размер папки, а не подпапки, вы можете использовать:
du -hs /path/to/directory
Update:
Вы должны знать, что du
показывает используемое дисковое пространство; а не размер файла.
Вы можете использовать --apparent-size
, если u хочет видеть сумму фактических размеров файлов.
--apparent-size
print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in ('sparse')
files, internal fragmentation, indirect blocks, and the like
И, конечно, нет необходимости в -h
(удобочитаемый) вариант внутри script.
Вместо этого вы можете использовать -b
для упрощения сравнения внутри script.
Но вы должны отметить, что -b
применяет --apparent-size
самостоятельно. И это может быть не то, что вам нужно.
-b, --bytes
equivalent to '--apparent-size --block-size=1'
поэтому я думаю, вы должны использовать --block-size
или -b
#!/bin/bash
SIZE=$(du -B 1 /path/to/directory | cut -f 1 -d " ")
# 2GB = 2147483648 bytes
# 10GB = 10737418240 bytes
if [[ $SIZE -gt 2147483648 && $SIZE -lt 10737418240 ]]; then
echo 'Condition returned True'
fi
Используйте сводку (-s
) и байты (-b
). Вы можете вырезать первое поле сводки с помощью cut
. Объединяя все это:
CHECK=$(du -sb /data/sflow_log | cut -f1)
Чтобы просто получить размер каталога, ничего более:
du --max-depth=0 ./directory
вывод выглядит как
5234232 ./directory
если вы просто хотите видеть общий размер папки и, вероятно, в формате MB или GB, попробуйте ниже script
$du -s --block-size=M /path/to/your/directory/
# 10GB
SIZE="10"
# check the current size
CHECK="`du -hs /media/662499e1-b699-19ad-57b3-acb127aa5a2b/Aufnahmen`"
CHECK=${CHECK%G*}
echo "Current Foldersize: $CHECK GB"
if (( $(echo "$CHECK > $SIZE" |bc -l) )); then
echo "Folder is bigger than $SIZE GB"
else
echo "Folder is smaller than $SIZE GB"
fi