欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42582425
使用场景:
我所在的QQ群中最近聊的是热火朝天,也就导致着我的QQ缓冲文件夹的大小在疯涨,满500M的时候QQ客户端就会提示用户需要清除一下缓存文件夹了。其中缓冲文件夹中最大的部分就是各种图片文件,包括各种格式的图片。在删除前,我就想按照图片格式进行一下分类后备份到其他文件夹内。这个时候我就需要做一下统计了:
打开文件管理器,并进入到待统计的文件夹内
依次选中指定后缀名的所有文件,在文件管理器中状态栏中有选中了多少个文件的统计,记录下来
一句话脚本用法:
find -type f -name "*.*" | cut -f3 -d'.' | sort | uniq -c -i (递归查找当前文件夹下的所有子文件夹) 或 <pre name="code" class="plain">find -maxdepth 1 -type f -name "*.*" | cut -f3 -d'.' | sort | uniq -c -i (只查找当前文件夹,不进行递归操作)上面的脚本分解步骤是:
注:由于我的QQ是运行在Window系统,所以上述脚本是通过Cynwin执行的。
先看一下find的man手册中的描述:
-maxdepth levels在这里我的做法是:
同理,先看一下cut的man手册中的描述:
-f, --fields=LIST
select only these fields; also print any line that contains no delimiter character, unless the -s option is specified
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
上面的find命令后输出的内容是按照下述的格式:
./a.png
./b.jpg
...
那么,在这里我们就只需要第二个"."之后的内容,所以使用了-d‘.‘参数指定了使用‘.‘作为分隔符,然后使用-f3来明确输出第三个字段的内容,即所有的后缀名。
sort命令很好理解,就是对前面的输出进行一下排序,以便与uniq命令操作。
我们重点看一下uniq命令的使用,man手册上是这么描述uniq命令的作用的:
uniq - report or omit repeated lines
其大致作用就是找到连续重复的行,并报告出来。注意,uniq关注的是:1.必须是连续重复,所以使用之前先进行了sort排序;该命令的操作对象是行,因此如果是统计段落内的重复单词请不要使用该命令。
下面再看一下uniq的-c和-i参数的说明:
-c, --count
prefix lines by the number of occurrences
-i, --ignore-case
ignore differences in case when comparing
在这里,我们的需求是把所有的重复行(后缀名)出现的次数统计出来,所以使用了-c参数;而且,在window系统是不区分大小写的,所以也使用了-i参数。
本次一句话脚本使用到了以下知识:
原文地址:http://blog.csdn.net/nfer_zhuang/article/details/42582425