![如何在UNIX中基于.扩大?](https://linux22.com/image/59058/%E5%A6%82%E4%BD%95%E5%9C%A8UNIX%E4%B8%AD%E5%9F%BA%E4%BA%8E.%E6%89%A9%E5%A4%A7%EF%BC%9F.png)
如何在基于 UNIX 的扩展中查找不同的文件。假设我每个 vamsi.log-vamsi100.log、krishna.txt-krishna100.txt、super.csv...、rajat.jpeg...、kiran.xml-kiran100.xml 等都有 100 个文件。我的要求是,如果我发出命令,它只会给出一个文件夹中有多少种不同的模式。它还应该为每个分机提供一个。我怎样才能实现这个目标?
ls -ltr
给出所有文件。但我需要知道一个文件夹中有多少种不同类型的文件?
答案1
重击命令:for i in *; do echo "${i##*.}"; done | uniq -c
答案2
单程:
find . -maxdepth 1 -type f | sort -u -t. -k3 | wc -l
解释:
find . -maxdepth 1 -type f
:查找当前目录下所有正常文件sort -u -t. -k3
:使用字段分隔符对字段上的输出进行排序,并仅打印相等行的3
第一行.
wc -l
: 计算行数
编辑
如果你使用的是zsh
shell 那么你可以运行
echo ${(u)$(echo *(:e))} | wc -w
结果可能比情况更好find
- 至少正确考虑了多点文件,如果您也对名称从那时开始的文件.
感兴趣
echo ${(u)$(echo {.,}*(:e))} | wc -w
答案3
我认为一个简单的方法ls *.extension
就可以解决问题:)
要计算它们,您可以使用ls *.extension -1 | wc -l
答案4
find . -maxdepth 1 -type f | awk -F. '{print $NF}' | sort | uniq -c
awk
用于抓取最后一个之后的任何内容.
(“扩展”)
sort
将每个“扩展名”的所有出现分组在一起
uniq -c
显示每行/扩展名的重复项数。