Нужна команда, которая будет разделять учет счета на файлы, которые имеют размер < 1M строк и> 1M строк

Окружающая среда: Solaris 9

У меня есть команда, которая дает мне общее количество файлов. Но мне нужна команда, которая будет отдельно подсчитывать файлы длиной менее 1 миллиона строк и файлы длиной более 1 миллиона строк. Как я могу это сделать?

find . -type f -exec wc -l {} \; | awk '{print $1}' | paste -sd+ | bc

2 ответа

Используйте опцию -size:

echo "Smaller: $(find . -type f -size -1M | wc -l)"
echo "Larger: $(find . -type f -size +1M | wc -l)"

Когда ваша находка не поддерживает 1M, просто напишите полный номер.

РЕДАКТИРОВАТЬ: @ комментарий rojomoke, у меня здесь есть версия, которая считает количество строк в файлах с wc утилита, так как это то, что вы использовали в исходном пост

Код:

# here I am already in the directory with the files so I just use * 
# to refer to all files
# the wc -l will return a single column of counts so I use $1 to 
# refer to field 1
wc -l * | awk '$1>1e6{bigger++}$1<1e6{smaller++}END{print "Files > 1M lines = ", bigger, "\nFiles < 1M lines = ", smaller}'

Выход:

"Files > 1M lines =  454" 
"Files < 1M lines =  528"
Другие вопросы по тегам