Разница между размером файла и размером на DIsk

Вы действительно можете использовать ( *.exe ) для решения этой проблемы в bash.

Помещение круглых скобок, подобных этому ( и ) вокруг шаблона, означает, что оно будет расширено и сохранено в array.

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

exes=( *.exe )
for exe in "${exes[@]}"; do
    echo "'$exe'"
done

Вот полный пример:

$ mkdir 'dir
> with
> spaces'
$ touch 'dir
> with
> spaces/dir
> with
> spaces'
$ touch 'dir
> with
> spaces/other
> file'
$ find .
.
./dir?with?spaces
./dir?with?spaces/dir?with?spaces
./dir?with?spaces/other?file
$ cd 'dir
> with
> spaces'
$ files=( * )
$ for file in "${files[@]}"; do
> echo "'$file'"
> done
'dir
with
spaces'
'other
file'

I может предоставить только полное решение после того, как вы выясните, как выглядит ваша структура каталогов, потому что я не уверен, что current_dir_name делает то, что вы думаете.

5
задан 15 April 2012 в 01:33

2 ответа

Наименьшее количество пространства, которое может быть выделено на диске, называется «сектором» - исторически это было 512 байт, но более новые жесткие диски имеют более крупные секторы размером 4096 байт (хотя я не уверен, что «логические сектора» 4096 байт, или они все еще 512 байт).

Итак, если у вас есть файл размером всего 1 байт, он по-прежнему будет занимать 512 байт на диске.

Большинство файлов намного больше, чем несколько байтов, поэтому разница обычно составляет всего несколько процентов. Я не уверен, есть ли у вас сотни миллионов крошечных файлов в папке «Загрузка», но это объясняет это поведение.

6
ответ дан 25 May 2018 в 12:41

Это, вероятно, связано с большим количеством мелких файлов, каждый файл занимает не менее 1 блока или сектора. Возможно и наоборот, с разреженными файлами. У вас может быть файл размером в несколько гигабайт, который занимает всего пару килобайт на диске (ls -lh и du -sh в файле покажут эту разницу). Большая строка из 0-байтов не сохраняется на диске, но сохраняется как метаданные («byte X til X + 10013434 равно 0»).

1
ответ дан 25 May 2018 в 12:41
  • 1
    du -h | cut -f1 | sort -h | uniq -c | sort -rn | head Первый столбец будет содержать счетчик, второй столбец - приблизительный размер файла. Если у вас много маленьких файлов, счет будет высоким для нескольких верхних строк с размером & lt; 4k. – jippie 15 April 2012 в 13:33

Другие вопросы по тегам:

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