Мне нужно найти файлы размером менее 5 МБ в / var / log /, и вывод должен отображать размер каждого файла. какую команду мне следует использовать?
Эта команда найдет файлы в /var/log
, которые являются меньше, чем 5M в размере , и печатают размер (в килобайтах) наряду с именем файла:
find /var/log -maxdepth 1 -size -5M -type f -printf '%5k %f\n'
Демонстрационный вывод мог бы быть похожим:
112 syslog.6.gz
1048 messages.1
112 syslog.5.gz
120 syslog.7.gz
1216 syslog.1
-maxdepth 1
, говорит, находят для не убывания в подкаталоги. (Если Вы хотите, чтобы подкаталоги были включены, опустили это)
-size -5M
, говорит, находят для ограничения результатов для регистрации меньше, чем 5M в размере.
-type f
говорит, находят, чтобы только искать регулярные файлы.
-printf '%5k %f\n'
говорит, находят, чтобы выделить 5 мест к размеру и распечатать размер в килобайтах, сопровождаемых пространством, сопровождаемым именем файла.
Это хорошо работает для меня:
find /var/log/ -name * -size -5M -ls | awk '{ print $11 " has a size of " $7 }'
Обновление 01 июня: В более новой Серверной версии Ubuntu эти -name *
не доступно, но можно теперь использовать это:
find /var/log/ -type f -size -5M -ls | awk '{ print $11 " has a size of " $7 }'
, Если бы Вам нужна более человекочитаемая версия, этот был бы хорошей опцией
find /var/log/ -type f -size -5M -exec ls -lsh {} \; | awk '{ print $10 " has a size of " $1 }'