【问题标题】:Sort and count number of occurrence of part of a filename with "ls"使用“ls”对文件名部分出现的次数进行排序和计数
【发布时间】:2020-06-08 08:40:51
【问题描述】:

我想在执行 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",但是如何提取文件名的第一部分。我的记录分隔符可以是“。” ?

【问题讨论】:

  • 每行是否有可能不止一个点?例如。 apple.cool.test1

标签: bash sorting unix ls uniq


【解决方案1】:

试试这个单线:

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

【讨论】:

  • 有效!!谢谢你:)))
【解决方案2】:

您可以使用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

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 2021-12-17
    • 1970-01-01
    • 2017-09-30
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多