如何在UNIX中基于.扩大?

如何在UNIX中基于.扩大?

如何在基于 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: 计​​算行数

编辑

如果你使用的是zshshell 那么你可以运行

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显示每行/扩展名的重复项数。

相关内容