2015-07-29 3 views
0

В качестве вспомогательного вопроса было бы неплохо знать, как сделать вывод таким же аккуратным (у bash есть форма форматирования строк?) В любом случае у меня есть находка. команда возвращает все файлы по определенному размеру, и я хочу отсортировать эти результаты в порядке убывания и передать их в почтовую программу. У меня есть часть рассылки, но я не уверен, как сортировать их и отображать размеры файлов организованным образом. Спасибо вам за помощь!Как сортировать результат команды find по размеру файла и отображать размеры файлов (в МБ)?

+3

В 'man find' вы можете найти параметр для печати размера файлов. Распечатав их где-нибудь в вашем результате, вы можете перевести его в 'sort'. – fedorqui

ответ

0

Найдет все файлы> 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.

+0

Есть ли способ преобразования размера в МБ? Я имею в виду, что я знаю, что коэффициент пересчета составляет 10^6, но есть ли способ использовать эту информацию? –

+0

Я думаю, что это попадет в корпус «pipe output through awk». Awk может выполнять базовую арифметику, поэтому отключение чисел будет относительно простым. – larsks

 Смежные вопросы

  • Нет связанных вопросов^_^