22
A
回答
38
如何:
find . -type f -name '*.*' | sed 's|.*\.||' | sort -u
0
如果你使用bash 4+
shopt -s globstar
for file in **/*.*
do
echo "${file##*.}
done
红宝石(1.9+)
ruby -e 'Dir["**/*.*"].each{|x|puts x.split(".")[-1]}' | sort -u
0
然而,使用find另一种解决方案(这应该连用正确的嵌入换行符对文件扩展名进行排序):
# [^.]: exclude dotfiles
find . -type f -name "[^.]*.*" -exec bash -c '
printf "%s\000" "${@##*.}"
' argv0 '{}' + |
sort -uz |
tr '\0' '\n'
1
find . -type f | sed 's|.*\.||' | sort -u
也适用于Mac。
0
Boooom另:
find * | awk -F . {'print $2'} | sort -u
0
ls -1 | sed 's/.*\.//' | sort -u
更新: 你是正确的马修。基于您的评论,这里是一个更新版本:
ls -R1 | egrep -C 0 "[^\.]+\.[^\./:]+$" | sed 's/.*\.//' | sort -u
+1
这有两个问题。首先它只适用于平面目录,但会丢失子目录。其次,它包括输出中没有扩展名的所有文件。 – Matthew 2014-10-09 13:11:33
0
我只是想很快这个,因为我是一个很好的答案谷歌搜索。我比Bash更倾向于正则表达式,但这也适用于子目录。我不认为包括文件,无需任何扩展名:
ls -R | egrep '(\.\w+)$' -o | sort | uniq -c | sort -r
相关问题
- 1. 递归地扩展到当前目录中的所有文件?
- 2. 递归地查找具有特定扩展名的文件
- 3. 查找文件扩展名的目录
- 4. 递归查找目录中的所有文本文件
- 5. 递归查找具有特定扩展名的文件
- 6. 如何在目录中递归地查找文件
- 7. 递归添加文件扩展名到所有文件
- 8. 使用FindFirstFile和FindNextFile递归地查找具有特定扩展名的文件
- 9. 如何在Linux中递归查找目录中的所有* .js文件?
- 10. Perl根据所有子目录中的扩展名查找文件
- 11. 更改目录中所有文件的文件扩展名OSX
- 12. 列出文件递归地目录名
- 13. 如何删除指定目录的所有文件扩展名?
- 14. 查找所有具有相同扩展名的文件,cp到新目录
- 15. windows c代码递归地列出文件名在一个具有所需扩展名的目录内
- 16. 递归地查找目录中的文本文件的计数
- 17. 递归地确定文件夹中所有扩展名的COUNT和SUM
- 18. 递归地显示具有特定扩展名的所有文件
- 19. C#获取所有没有目录扩展名的文件名
- 20. 在目录中递归搜索具有特定扩展名的文件
- 21. 如何从目录中获取文件名和扩展名
- 22. 查找扩展名以外的所有文件,但不包括特定目录
- 23. 如何查找文件的扩展名?
- 24. 在目录树中查找给定扩展名的文件
- 25. Git - 递归删除文件扩展名
- 26. 如何递归地重命名目录
- 27. 列出除扩展名外的目录中的所有文件
- 28. gitignore目录中所有扩展名的文件
- 29. 更改目录中所有文件的扩展名
- 30. 如何从dir及其所有子目录中删除所有.php扩展名?
'回声“gniourf.tar.gz” | awk -F。 {'print $ 2'}`给出`tar`和`echo'one.two.three.pdf'| awk -F。 {'print $ 2'}`给出`two`。你确定你的方法是好的吗? – 2014-06-27 13:22:53
我认为上述解决方案是一个简单的解决方案,在这里我把另一个发现。 -type f -name“*。*”| awk -F。 '!a [$ NF] ++ {print $ NF}'。我不认为用简单的命令你不能得到每一种类型的文件。正如你之前所说的那样,在解析每一行时都会遇到一些问题,所以在这种情况下,我确定最好使用python,perl或类似的脚本来处理这些问题。无论如何,我把一个简单的解决方案,如果你现在的文件扩展名,你可以使用类似grep的过滤| grep'txt \ | png \ | pdf'。谢谢 – ackuser 2014-06-30 09:20:04