Сортировать и подсчитать количество вхождений части имени файла с «ls» - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу подсчитать количество вхождений части имени файла при выполнении команды ls.

Например, если в моем каталоге есть следующие файлы:

apple.cool_test1
banana.cool_test1
banana.cool_test2
cherry.cool_test1
cherry.cool_test2
cherry.cool_test3

Я хочу получить такой результат :

1 apple 
2 banana
3 cherry

Итак, я попытался "ls | sort | uniq -c", но как мне извлечь первую часть имени файла? Мой разделитель записей может быть "."

Ответы [ 2 ]

2 голосов
/ 24 февраля 2020

Вы можете извлечь первую часть с помощью cut или awk:

$ printf '%s\n' * | cut -d'.' -f1 | uniq -c
      1 apple
      2 banana
      3 cherry
$ printf '%s\n' * | awk -F'.' '{print $1}' | uniq -c
      1 apple
      2 banana
      3 cherry
2 голосов
/ 24 февраля 2020

попробуй однострочник:

$  awk -F'.' '{a[$1]++}END{for(x in a)print a[x],x}' file  
1 apple
2 banana
3 cherry
...