日期:2014-05-16  浏览次数:20718 次

linux下对符合条件的文件大小做汇总【转】

使用du命令查看一个目录下符合匹配条件的文件占用的磁盘空间

  1. du-c -h*log

e.g:

?

有一个目录test有存放有一年的xml文件

是以test_user_company_yyyyMMDD.xml方式命名进行存放。。。

要统计2012年1月产生的文件大小,命令如下:

?

定位到test目录:

du -c -h *_201201*.csv

或者

du -ch *_201201*.csv

?

1M?? ?? test_user_company_20120101.xml

1M?? ? ?test_user_company_20120102.xml

1M?? ? ?test_user_company_20120103.xml

1M?? ? ?test_user_company_20120104.xml

1M?? ? ?test_user_company_20120105.xml

....

....

1M?? ?? test_user_company_20120131.xml

31M??? total

?

查看当前目录下所有文件夹及文件的大小:

test

? |__subdir1

? |__subdir2

? |__test_user_company_20120101.xml

? |....

? |__test_user_company_20120131.xml

?

定位到当前目录,命令如下:

?

du -sh *

?

0M??? subdir1
0M??? subdir2
1M??? test_user_company_20120101.xml
...

...
1M??? test_user_company_20120131.xml
31M??? total

?

要显示如上汇总统计total 的值,命令如下:

?

du -sch *

?

或使用awk做汇总

  1. du*log|awknoBEGIN{count=0;size=0;}\
  2. {count = count + 1; size = size +$1/1024;}\
  3. END{print “Toting count ” count;\
  4. print “Toting size “size/1024 ” GB” ;\
  5. print “Avg size “size / count “MB”}no

或者查找大于某个大小

  1. find.-size+100k -execls-l{}\;|awknoBEGIN{count=0;size=0;}\
  2. {count = count + 1; size = size +$5/1024/1024;}\
  3. END{print “Toting count ” count;\
  4. print “Toting Size “size/1024 ” GB” ;\
  5. print “Avg Size “size / count “MB”;\
  6. print”—”}no

find命令的文件大小选项含义

-size n[bckw] 查找文件长度为n块的文件,带有c时表示文件长度以字节计,k为kb

查找在什么时间之后的文件

  1. #对之前一天的文件做查找
  2. find.-mtime-1-execls-l{}\;|awknoBEGIN{count=0;size=0;}\
  3. {count = count + 1; size = size +$5/1024/1024;}\
  4. END{print “Toting count ” count;\
  5. print “Toting Size “size/1024 ” GB” ;\
  6. print “Avg Size “size / count “MB”;\
  7. print”—”}no

find命令的时间相关条件含义

-newer file1 !file2查找更改时间比文件file1新但比文件file2旧的文件。-mtime -n +n按照文件的更改时间来查找文件, -n表示文件更改时间距现在n天以内, +n表示文件更改时间距现在n天以前。vps服务器是什么
。还有-atime和-ctime选项 -atime 为接见文件的时间,学会linux vps 配置
。 -ctime 为改变文件形态的时间, -mtime 为修改文件内容的时间同时对应下面三个选项还有将time变为min的选项,他们的时间单位为分钟。   -in the morningin n查找系统中末了N分钟接见的文件-atime n查找系统中末了n*24小时接见的文件-cmin n查找系统中末了N分钟被改变文件形态的文件-ctime n查找系统中末了n*24小时被改变文件形态的文件  -mmin n查找系统中末了N分钟被改变文件数据的文件-mtime n查找系统中末了n*24小时被改变文件数据的文件

不妨始末 find 命令配合 awk 命令对符合条件的文件做汇总统计。http://www.weizhanqun.com/archives/180.html 。

统计某文件夹下文件的个数

ls -l |grep “^-”|wc -l

统计某文件夹下目录的个数

ls -l |grep “^d”|wc -l

统计文件夹下文件的个数,包括子文件夹里的

ls -lR|grep “^-”|wc -l
如统计/home/han目录(包罗子目录)下的所有js文件则:
ls -lR /home/han|grep js|wc -l 或 ls -l “/home/han”|grep “js”|wc-l

统计文件夹下目录的个数,包括子文件夹里的

ls -lR|grep “^d”|wc -l

    

?

ls -lR

长列表输入该目录下文件信息(R代表子目录注意这里的文件,http://www.weizhanqun.com 。不同于一般的文件,可能是目录、链接、设备文件等)

grep “^-”

这里将长列表输入信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d

wc -l

统计输入信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数.

?

?

?

?