Я ищу команду 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 ...
Вам нужно решить, какой критерий вы хотите.