我想计算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"
,但是如何提取文件名的第一部分。我的记录分隔符可以是“。” ?
尝试一下这种方式:
$ awk -F'.' '{a[$1]++}END{for(x in a)print a[x],x}' file
1 apple
2 banana
3 cherry
您可以用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