【发布时间】:2013-01-25 02:45:41
【问题描述】:
嘿,我对如何递归地计算文件夹中不同数量的文件类型/扩展名感到震惊。我还需要将它们打印到 .txt 文件中。
例如,我有 10 个 txt 的 20 个 .docx 文件混合在多个文件夹中。
帮帮我!
【问题讨论】:
嘿,我对如何递归地计算文件夹中不同数量的文件类型/扩展名感到震惊。我还需要将它们打印到 .txt 文件中。
例如,我有 10 个 txt 的 20 个 .docx 文件混合在多个文件夹中。
帮帮我!
【问题讨论】:
find ./ -type f |awk -F . '{print $NF}' | sort | awk '{count[$1]++}END{for(j in count) print j,"("count[j]" occurences)"}'
获取所有带有find的文件名,然后使用awk获取扩展名,然后再次使用awk计算出现次数
【讨论】:
仅使用 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
【讨论】:
到目前为止,这个问题似乎还没有解决,所以这是我对文件进行计数和排序的过程:
find . -type f | sed -n 's/..*\.//p' | sort -f | uniq -ic
【讨论】: