Вопрос по command, unix – Найти файлы с размером в Unix [закрыто]

46

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

find . -size +10000k -print.

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

Stack Overflow - сайт для вопросов программирования и разработки. Этот вопрос кажется не по теме, потому что он не касается программирования или разработки. УвидетьWhat topics can I ask about here в справочном центре. возможноSuper User или жеUnix & Linux Stack Exchange было бы лучше спросить. Также смWhere do I post questions about Dev Ops? jww
Эта команда дает мнеfind: unknown predicate '-print.'  Я предполагаю. на самом деле там нет. Точность важна. Keith Thompson

Ваш Ответ

3   ответа
4

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

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

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

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

find . -size +1M ...

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

find . -size +1048575c ...

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

@JonathanLeffler: исправлено, спасибо!
Вы нуждаетесь вc после+1048575 получить байты (символы) вместо 512-байтовых блоков по умолчанию.
51

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

Если ваша версияfind не приму+ нотация (которая действует скорее какxargs делает), то вы можете использовать (GNUfind а также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 команда, конечно.

Благодарю. Я использовал найти. + 300000 К-принт | xargs ls -sd 2 & gt; / DEV / нуль Kannan Lg
9

качестве 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
Интересно. Это должно быть задокументировано как расширение GNU (я полагаю) к стандарту POSIXfind.

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