Использование find с тегом -size

Первоначально я задавал этот вопрос на форумах Ubuntu, и я думал, что понял это, но потом я увидел, что кто-то использует ту же команду по-другому, и теперь я не уверен, понимаю ли я ее больше,

Вот как выглядит мой стандартный каталог «Картинки»:

-rw-rw-r-- 1 mason mason 1.3M Aug 12 21:35 Beijing-trip.jpg -rw-r--r-- 1 mason mason 26K May 27 2013 Eiffel-tour.jpg -rw-r--r-- 1 mason mason 1.5M Sep 20 2013 work-buddies.jpg -rw-r--r-- 1 mason mason 155K Apr 2 2013 Q1-profits.jpg -rw-r--r-- 1 mason mason 245K Nov 27 2016 Ireland.jpg -rw-r--r-- 1 mason mason 675K Jun 14 2014 Christmas.jpg -rw-r--r-- 1 mason mason 210K Nov 27 2016 Thanksgiving.jpg -rw-r--r-- 1 mason mason 348K May 27 2013 family.jpg -rw-r--r-- 1 mason mason 805K Feb 27 2015 museum-of-fine-arts.jpg -rw-r--r-- 1 mason mason 8.6K May 26 2013 4th-of-July.jpg -rw-r--r-- 1 mason mason 20K Mar 9 2013 Taipei.jpg -rw-r--r-- 1 mason mason 1.9M Jun 14 2014 Australia.jpg -rw-r--r-- 1 mason mason 404K Aug 10 21:53 business-trip.jpg drwxrwxr-x 2 mason mason 4.0K Mar 18 16:55 Wallpapers -rw-r--r-- 1 mason mason 145K Jan 15 2015 family-reunion.jpg -rw-r--r-- 1 mason mason 6.7K Apr 2 2013 friends-and-family.jpg

Согласно странице man для команды find, при использовании -size, размеры файлов округляются до обработки командой find, но то, что я хотел бы знать, на сколько?

В частности, почему find . -size -1M ничего не возвращает, тогда как find . -size -8k печатает файл friends-and-family.jpg, а также файлы каталогов? Возможно, я всегда это неправильно понял, но на форумах Ubuntu я впервые узнал, что файл причины friends-and-family.jpg не отображается на выходе после ввода find . -size -1M, потому что файл округляется до 1 МБ, и поскольку мы специально запросил файлы размером менее 1 МБ, команда find не печатает имя файла. Но если файл friends-and-family.jpg округляется до 1 МБ в первой итерации команды, то как файл friends-and-family.jpg заканчивается на выходе при вводе find . -size -8k? Должен ли файл friends-and-family.jpg снова округлить до 1 МБ? Если да, то как получится файл с размером 1 МБ, когда мы специально запрашивали файлы размером менее 8 КБ?

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

find . -size -2M find . -size -3M find . -size -8k find . -size -10k find . -size -2G

Ваша помощь очень приветствуется.

2
задан 15 August 2017 в 03:07

3 ответа

Это объясняется в man-странице (выделено мной):

Имейте в виду, что размер округляется до следующего блока. Поэтому -size -1M не эквивалентен -size -1048576c. Первый только соответствует пустым файлам, последний соответствует файлам от 1 до 1 045 575 байт.

Примечание: следующий блок. С -1M файл размером 6.7k (~ 0.007M) округляется до 1M, потому что рассматриваемый блок является MB. Аналогично, с -8k размер округляется до 7k, так как текущий блок - KB, и это находится в пределах пределов.

Итак, для этих команд:

find . -size -2M
find . -size -3M
find . -size -8k
find . -size -10k
find . -size -2G

Размер 6.7k будет округлен до 1M, 1M, 7k, 7k, 1G соответственно.

Теперь, возвращаясь к цитируемому абзацу, вы видите, почему -size -1x для любой единицы x всегда будет соответствовать только пустым файлам?

5
ответ дан 22 May 2018 в 19:27
  • 1
    Ох, хорошо, понимаю. Как только файл содержит 1 байт данных, он будет округлен до 1 ГБ при наборе find. -размер -1G. А поскольку файл, который отображается как 1 ГБ файл, не может быть меньше 1 ГБ, find ничего не возвращает, а только пустые файлы. Спасибо, муру. – John_Patrick_Mason 15 August 2017 в 03:32
  • 2
    Еще один вопрос. Если я нахожу find. -size -10k и имеют два файла: один размером 26 КБ и другой размером 1,3 МБ, к чему эти файлы округляются до? Я предполагаю, что 26KB-файл остается прежним, тогда как файл 1.3MB округляется до 2.0MB, но я хочу быть уверенным. – John_Patrick_Mason 15 August 2017 в 06:07
  • 3
    @John_Patrick_Mason ~ 1300 КБ – muru 15 August 2017 в 06:34
  • 4
    О, так вы говорите, что если размер файла выходит за пределы границы, команда find даже не пытается их округлить? – John_Patrick_Mason 15 August 2017 в 06:39
  • 5
    Нет, я говорю, что единица здесь KB, поэтому округление в KB (1.3MB ~ 1.3 * 1024 KB, но этот размер не является достаточно точным для меня, чтобы сделать какое-либо значимое округление). – muru 15 August 2017 в 06:41

Это объясняется в man-странице (выделено мной):

Имейте в виду, что размер округляется до следующего блока. Поэтому -size -1M не эквивалентен -size -1048576c. Первый только соответствует пустым файлам, последний соответствует файлам от 1 до 1 045 575 байт.

Примечание: следующий блок. С -1M файл размером 6.7k (~ 0.007M) округляется до 1M, потому что рассматриваемый блок является MB. Аналогично, с -8k размер округляется до 7k, так как текущий блок - KB, и это находится в пределах пределов.

Итак, для этих команд:

find . -size -2M find . -size -3M find . -size -8k find . -size -10k find . -size -2G

Размер 6.7k будет округлен до 1M, 1M, 7k, 7k, 1G соответственно.

Теперь, возвращаясь к цитируемому абзацу, вы видите, почему -size -1x для любой единицы x всегда будет соответствовать только пустым файлам?

5
ответ дан 18 July 2018 в 08:30

Это объясняется в man-странице (выделено мной):

Имейте в виду, что размер округляется до следующего блока. Поэтому -size -1M не эквивалентен -size -1048576c. Первый только соответствует пустым файлам, последний соответствует файлам от 1 до 1 045 575 байт.

Примечание: следующий блок. С -1M файл размером 6.7k (~ 0.007M) округляется до 1M, потому что рассматриваемый блок является MB. Аналогично, с -8k размер округляется до 7k, так как текущий блок - KB, и это находится в пределах пределов.

Итак, для этих команд:

find . -size -2M find . -size -3M find . -size -8k find . -size -10k find . -size -2G

Размер 6.7k будет округлен до 1M, 1M, 7k, 7k, 1G соответственно.

Теперь, возвращаясь к цитируемому абзацу, вы видите, почему -size -1x для любой единицы x всегда будет соответствовать только пустым файлам?

5
ответ дан 24 July 2018 в 19:06

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

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