В качестве вспомогательного вопроса было бы неплохо знать, как сделать вывод таким же аккуратным (у bash есть форма форматирования строк?) В любом случае у меня есть находка. команда возвращает все файлы по определенному размеру, и я хочу отсортировать эти результаты в порядке убывания и передать их в почтовую программу. У меня есть часть рассылки, но я не уверен, как сортировать их и отображать размеры файлов организованным образом. Спасибо вам за помощь!Как сортировать результат команды find по размеру файла и отображать размеры файлов (в МБ)?
ответ
Найдет все файлы> 1000 байт и распечатать имя файла и размер (в байтах):
$ find tmp/ -size +1000c -printf '%p %s\n' | sort -k2 -n
который даст вам выход, как:
tmp/gitwork/integration/.git/hooks/pre-rebase.sample 4951
tmp/gitwork/repo1/.git/hooks/pre-rebase.sample 4951
tmp/gitwork/repo2/.git/hooks/pre-rebase.sample 4951
tmp/gitwork/upstream1/hooks/pre-rebase.sample 4951
tmp/gitwork/upstream2/hooks/pre-rebase.sample 4951
tmp/constraints.dot 7035
tmp/constraints.svg 41657
tmp/so31567373/KBFI.xml 375557
tmp/overflow.tar 399360
Если вы хотите сделать это «довольно», вы можете добавить некоторые поля ширины спецификаторов к этой директиве printf
:
$ find tmp/ -size +1000c -printf '%-60p %s\n' | sort -k2 -n
Что бы получить Вас:
tmp/gitwork/integration/.git/hooks/pre-rebase.sample 4951
tmp/gitwork/repo1/.git/hooks/pre-rebase.sample 4951
tmp/gitwork/repo2/.git/hooks/pre-rebase.sample 4951
tmp/gitwork/upstream1/hooks/pre-rebase.sample 4951
tmp/gitwork/upstream2/hooks/pre-rebase.sample 4951
tmp/constraints.dot 7035
tmp/constraints.svg 41657
tmp/so31567373/KBFI.xml 375557
tmp/overflow.tar 399360
Если ваше определение «довольно» требует чего-то более сложного, вы можете исследовать конвейерный вывод через awk
.
Есть ли способ преобразования размера в МБ? Я имею в виду, что я знаю, что коэффициент пересчета составляет 10^6, но есть ли способ использовать эту информацию? –
Я думаю, что это попадет в корпус «pipe output through awk». Awk может выполнять базовую арифметику, поэтому отключение чисел будет относительно простым. – larsks
В 'man find' вы можете найти параметр для печати размера файлов. Распечатав их где-нибудь в вашем результате, вы можете перевести его в 'sort'. – fedorqui