Я просто случайно наткнулся на команду find в Linux, в двух словах: мне нужно было найти все файлы размером менее 2 КБ в определенной папке, поэтому я выполнил команду:
find /folder_to_search_into/ -type f -size -2k
который в соответствии с man-страницей find должен возвращать все, что меньше 2Kilobytes
Но я заметил, что в нем пропущено несколько файлов размером от 1 до 2 КБ.
Я тогда выпустил
find /folder_to_search_into/ -type f -size -2048c
который должен быть точным эквивалентом, так как "c" обозначает байты, и в этом случае он нашел все файлы, которые я искал.
Есть идеи, почему это поведение? Я, наверное, здесь упускаю очевидное. Не уверен, связано ли это с этой заметкой (из справочной страницы поиска - в разделе размера):
Размер не учитывает косвенные блоки, но учитывает блоки в разреженных файлах, которые фактически не выделены. Помните, что спецификаторы формата "% k" и "% b" -printf по-разному обрабатывают разреженные файлы. Суффикс 'b' всегда обозначает блоки по 512 байт, а не блоки по 1 килобайту, что отличается от поведения -ls.