Я ищу команду Unix для печати файлов с их размером. Я использовал это, но это не сработало.Найти файлы размером в Unix
find . -size +10000k -print.
Я хочу напечатать размер файла вместе с файлом/каталогом.
Я ищу команду Unix для печати файлов с их размером. Я использовал это, но это не сработало.Найти файлы размером в Unix
find . -size +10000k -print.
Я хочу напечатать размер файла вместе с файлом/каталогом.
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
, конечно.
спасибо. Я использовал найти. -размер + 300000k -print | xargs ls -sd 2>/dev/null –
Предполагая, что вы GNU найти:
find . -size +10000k -printf '%s %f\n'
Если вы хотите постоянной ширины для поля размера, вы можете сделать что-то вроде:
find . -size +10000k -printf '%10s %f\n'
Обратите внимание, что -size +1000k
выбирает файлы, по крайней мере 10240000 байты (k
- 1024, а не 1000). Вы сказали в комментарии, что хотите файлы размером более 1 М; если это 1024 * 1024 байт, то это:
find . -size +1M ...
будет делать трюк - за исключением того, что он будет также печатать размер и имя файла, которые точно 1024 * 1024 байт. Если это имеет значение, вы можете использовать:
find . -size +1048575c ...
Вам нужно решить, какой критерий вы хотите.
Вам понадобится 'c' после' + 1048575', чтобы получить байты (символы) вместо стандартных 512-байтовых блоков. –
@JonathanLeffler: Исправлено, спасибо! –
Найти можно использовать для печати размера файла в байтах с% 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 (я полагаю) к стандарту POSIX ['find'] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html). –
Этой команда дает мне 'найти: неизвестный предикат«-print.'' Я предполагаю '.' это на самом деле не существует. Точность важна. –
Stack Overflow - это сайт для вопросов программирования и разработки. Этот вопрос кажется вне темы, потому что речь идет не о программировании или разработке. См. [Какие темы можно задать здесь] (http://stackoverflow.com/help/on-topic) в Справочном центре. Возможно, лучше сказать [Суперпользователь] (http://superuser.com/) или [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/). Также см. [Где я пишу вопросы о Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww