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