【问题标题】:How can I count the different file types within a folder using linux terminal?如何使用 linux 终端计算文件夹中的不同文件类型?
【发布时间】:2013-01-25 02:45:41
【问题描述】:

嘿,我对如何递归地计算文件夹中不同数量的文件类型/扩展名感到震惊。我还需要将它们打印到 .txt 文件中。

例如,我有 10 个 txt 的 20 个 .docx 文件混合在多个文件夹中。

帮帮我!

【问题讨论】:

    标签: linux shell terminal


    【解决方案1】:
    find ./ -type f |awk -F . '{print $NF}' | sort | awk '{count[$1]++}END{for(j in count) print j,"("count[j]" occurences)"}'
    

    获取所有带有find的文件名,然后使用awk获取扩展名,然后再次使用awk计算出现次数

    【讨论】:

    • 非常感谢救生员!
    【解决方案2】:

    仅使用 bash:此代码需要版本 4

    #!/bin/bash
    shopt -s globstar nullglob
    declare -A exts
    
    for f in * **/*; do
        [[ -f $f ]] || continue     # only count files
        filename=${f##*/}           # remove directories from pathname
        ext=${filename##*.}
        [[ $filename == $ext ]] && ext="no_extension"
        : ${exts[$ext]=0}           # initialize array element if unset
        (( exts[$ext]++ ))
    done
    
    for ext in "${!exts[@]}"; do
        echo "$ext ${exts[$ext]}"
    done | sort -k2nr | column -t
    

    【讨论】:

    • 这太壮观了。格式清晰。自己没有扩展。按频率排序。干得好。
    【解决方案3】:

    到目前为止,这个问题似乎还没有解决,所以这是我对文件进行计数和排序的过程:

    find . -type f | sed -n 's/..*\.//p' | sort -f | uniq -ic
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      相关资源
      最近更新 更多