46

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

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

find . -size +10000k -print.

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

Stack Overflow - сайт для вопросов программирования и разработки. Этот вопрос кажется не по теме, потому что он не касается программирования или разработки. Увидеть<a href="http://stackoverflow.com/help/on-topic">What topics can I ask about here</a> в справочном центре. возможно<a href="http://superuser.com/">Super User</a> или же<a href="http://unix.stackexchange.com/">Unix &amp; Linux Stack Exchange</a> было бы лучше спросить. Также см<a href="http://meta.stackexchange.com/q/134306">Where do I post questions about Dev Ops?</a>

Feb 07, 2017, 10:52 PMот

Эта команда дает мне<code>find: unknown predicate &apos;-print.&apos;</code>  Я предполагаю<code>.</code> на самом деле там нет. Точность важна.

Apr 09, 2012, 9:08 PMот

3ответа

4

Предполагая, что у вас есть GNU, найдите:

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 ...

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

9

Find может использоваться для распечатки размера файла в байтах с% 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
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 команда, конечно.

RelatedQuestions