Я ищу команду Unix для печати файлов с их размером. Я использовал это, но это не сработало.
find . -size +10000k -print.
Я хочу напечатать размер файла вместе с файлом/directory.
Я ищу команду Unix для печати файлов с их размером. Я использовал это, но это не сработало.
find . -size +10000k -print.
Я хочу напечатать размер файла вместе с файлом/directory.
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, конечно.
Найти можно использовать для печати размера файла в байтах с% 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
Предполагая, что вы нашли 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 ...
Вам нужно решить, какой критерий вы хотите.