Измерение дискового пространства определенных типов файлов в совокупности

Его немного сложно, проверьте, работает ли он для вас

select a.id,if(a.parent = 0,@varw:=concat(a.id,','),@varw:=concat(a.id,',',@varw)) as list from (select * from recursivejoin order by if(parent=0,id,parent) asc) a left join recursivejoin b on (a.id = b.parent),(select @varw:='') as c  having list like '%19,%';

Ссылка на скрипт SQL http://www.sqlfiddle.com/#!2/e3cdf/2

Замените имя поля и таблицы соответствующим образом.

20
задан Filburt 13 July 2012 в 16:57
поделиться

6 ответов

Это сделает это:

total=0
for file in *.txt
do
    space=$(ls -l "$file" | awk '{print $5}')
    let total+=space
done
echo $total
4
ответ дан 29 November 2019 в 06:11
поделиться

macOS

  • используйте инструмент du и параметр -I , чтобы исключить все остальные файлы

Linux

-X, --exclude-from=FILE
              exclude files that match any pattern in FILE

--exclude=PATTERN
              exclude files that match PATTERN
4
ответ дан 29 November 2019 в 06:11
поделиться

Вот способ сделать это (в Linux, используя GNU coreutils du и синтаксис Bash), избегая плохой практики :

total=0
while read -r line
do
    size=($line)
    (( total+=size ))
done < <( find . -iname "*.txt" -exec du -b {} + )
echo "$total"

Если вы хотите исключить текущий каталог, используйте -mindepth 2 с find .

Другой версия, которая не требует синтаксиса Bash:

find . -iname "*.txt" -exec du -b {} + | awk '{total += $1} END {print total}'

Обратите внимание, что они не будут работать должным образом с именами файлов, которые включают символы новой строки (но с пробелами будут работать).

6
ответ дан 29 November 2019 в 06:11
поделиться

GNU find,

find /home/d -type f -name "*.txt" -printf "%s\n" | awk '{s+=$0}END{print "total: "s" bytes"}'
3
ответ дан 29 November 2019 в 06:11
поделиться

найти папку1 папку2 -iname '* .txt' -print0 | du --files0-from - -c -s | tail -1

40
ответ дан 29 November 2019 в 06:11
поделиться

Основываясь на ennuikiller, это будет обрабатывать пробелы в именах. Мне нужно было сделать это и получить небольшой отчет:

find -type f -name "* .wav" | grep экспорт | ./calc_space

#!/bin/bash
# calc_space
echo SPACE USED IN MEGABYTES
echo
total=0
while read FILE
do
    du -m "$FILE"
    space=$(du -m "$FILE"| awk '{print $1}')
    let total+=space
done
echo $total
2
ответ дан 29 November 2019 в 06:11
поделиться
Другие вопросы по тегам:

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