сортировать вывод по столбцу

13

Я хотел бы принять эту команду find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done( отсюда ). который имеет выход в основном

./kennel:       11062
./shadow:       15449
./ccc:  9765
./journeyo:     14200
./norths:       10710

и сортируйте его по номерам от самых больших до самых маленьких. но я не уверен, как сделать sort, или что-то работать на другой столбец.

xenoterracide
источник

Ответы:

27

Трубы через линии sort -n -r -k2. Отредактировано, чтобы сортировать от самого большого до самого маленького.

W_Whalley
источник
Пробовал и работает без нареканий
Герт
3

Один из вариантов - перевернуть столбцы:

$ find -maxdepth 1 -type d | while read -r dir; do printf "%d\t%s\n" "`find "$dir" | wc -l`" "$dir"; done

Тогда вы получите вывод, как это:

17  .
1   ./acroread_1000_1002
1   ./.ICE-unix
2   ./.X11-unix
1   ./orbit-mrozekma
2   ./ns.mrozekma.:0

Вы можете передать это через sort -nrсортировку так, как вы хотите. Вы даже можете передать отсортированный результат через что-то вроде awk -F'\t' '{print $2 "\t" $1}'перевернуть столбцы, если они вам нужны в таком порядке

Михаил Мрозек
источник