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


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, или что-то работать на другой столбец.

Ответы:


27

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


Пробовал и работает без нареканий
Герт

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}'перевернуть столбцы, если они вам нужны в таком порядке

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.