查找某个目录下使用的所有文件扩展名(递归)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找某个目录下使用的所有文件扩展名(递归)相关的知识,希望对你有一定的参考价值。

  1. # Not sure, what this is good for - however this is asked sometimes.
  2.  
  3. # I specifically exclude "dotfiles" and only consider files of the form "foo.bar" (i.e. we
  4. # don't consider filenames without an "inner dot" at all)
  5. find . -type f -name '[^.]*.*' \
  6. -exec bash -c 'printf "%s\n" ${@##*.}' _ {} + | sort -u
  7. # (or ... | sort | uniq, in case the sort lacks -u, which is a GNUism)
  8.  
  9. # Of course it's trivial to do it non-recursively:
  10. for f in *.*; do printf "%s\n" "${f##*.}"; done | sort -u
  11.  
  12. # or recursively again, with a bash4 associative array, including
  13. # a count for each extension (no sorting here):
  14. unset a; declare -A a
  15. while IFS= read -r ext; do
  16. ((a[$ext]++))
  17. done < <(find . -type f -name '[^.]*.*' \
  18. -exec bash -c 'printf "%s\n" ${@##*.}' _ {} +)
  19. for ext in "${!a[@]}"; do
  20. printf "'%s' (%s)\n" "$ext" "${a[$ext]}"
  21. done
  22.  
  23. # NOTE: all methods above fail, if an extension contains embedded newlines.

以上是关于查找某个目录下使用的所有文件扩展名(递归)的主要内容,如果未能解决你的问题,请参考以下文章

使用批处理文件在目录下递归删除所有特定类型(扩展名)的文件

请问linux下如何递归查找某个目录的所有文件

在 Bash 中递归更改文件扩展名

在 Unix 上查找不以特定扩展名结尾的文件名?

linux下使用find xargs grep查找文件及文件内容

用C语言编出遍历出某个目录以及其子目录下所有以TXT为扩展名的文本文件