Подтвердить что ты не робот

Найти файлы с размером в Unix

Я ищу команду Unix для печати файлов с их размером. Я использовал это, но это не сработало.

find . -size +10000k -print.

Я хочу напечатать размер файла вместе с файлом/directory.

4b9b3361

Ответ 1

find . -size +10000k -exec ls -sd {} +

Если ваша версия find не примет нотацию + (которая действует скорее как xargs), то вы можете использовать (GNU find и xargs, поэтому find, вероятно, поддерживает + в любом случае):

find . -size +10000k -print0 | xargs -0 ls -sd

или вы можете заменить + на \; (и жить с относительной неэффективностью этого), или вы можете столкнуться с проблемами, вызванными пробелами в именах, и использовать перенос:

find . -size +10000k -print | xargs ls -sd

Команда -d в командах ls гарантирует, что если каталог когда-либо найден (маловероятен, но...), тогда информация каталога будет напечатана, а не файлы в каталоге. И, если вы ищете файлы размером более 1 МБ (как предлагается теперь удаленный комментарий), вам нужно настроить +10000k на 1000k или, возможно, +1024k или +2048 (для 512-байтных блоков, блок по умолчанию для -size). При этом будет указан размер и имя файла. Вы могли бы избежать необходимости -d, добавив -type f к команде find, конечно.

Ответ 2

Найти можно использовать для печати размера файла в байтах с% s как printf. % h/% f печатает префикс каталога и имя файла соответственно. \n заставляет новую строку.

Пример

find . -size +10000k -printf "%h/%f,%s\n"

Выход

./DOTT/extract/DOTT/TENTACLE.001,11358470
./DOTT/Day Of The Tentacle.nrg,297308316
./DOTT/foo.iso,297001116

Ответ 3

Предполагая, что вы нашли GNU:

find . -size +10000k -printf '%s %f\n'

Если вам нужна постоянная ширина поля размера, вы можете сделать что-то вроде:

find . -size +10000k -printf '%10s %f\n'

Обратите внимание, что -size +1000k выбирает файлы не менее 10 240 000 байт (k равно 1024, а не 1000). Вы сказали в комментарии, что хотите файлы размером более 1 М; если это 1024 * 1024 байта, то это:

find . -size +1M ...

выполнит трюк, за исключением того, что он также напечатает размер и имя файлов размером 1024 * 1024 байта. Если это имеет значение, вы можете использовать:

find . -size +1048575c ...

Вам нужно решить, какой критерий вы хотите.