我有一个文件夹,其中包含多个相似名称的文件(文件名中以日期时间区分)
我希望能够对该文件夹中的每个文件组/类型进行计数。
即
file1_25102019_111402.csv
file1_24102019_111502.csv
file1_23102019_121402.csv
file1_22102019_101402.csv
file2_25102019_161404.csv
file2_24102019_131205.csv
file2_23102019_121306.csv
我需要能够返回这样的内容;
file1 4
file2 3
理想情况下,答案将类似于“第一个x字符为ABCD的文件数”
没有什么我不知道如何开始
使用示例文件的命令
ls | sed 's/_[0-9]\{8\}_[0-9]\{6\}/_*/' | sort | uniq -c
打印
3 file1_*.csv
3 file2_*.csv
说明:
sed
命令将_
,8位数字,另一个_
和另外6位数字的序列替换为_*
。使用示例文件名,您将获得file1_*.csv
或file2_*.csv
每次3次。sort
对行进行排序。uniq -c
计数相等的后续行数。如果您想比较前5个字符,也可以使用
ls | cut -c1-5 | sort | uniq -c
打印
3 file1
3 file2
或者,如果要从第一个_
到结尾都剥离所有内容,则可以使用
ls | sed 's/_.*//' | sort | uniq -c
将输出与上面相同的输出。