• 576阅读
  • 2回复

Linux下查看文件和文件夹大小 删除系统日志等

楼层直达
}v;@1[.B  
%^p1ax  
 ;B^G<  
[font=&quot]场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除多余的日志问题解决! =~?2i)-mC  
f%an<>j^w  
[font=&quot]1 Linux下查看文件和文件夹大小 @7" xDgA  
,1Suq\ L  
O9r3^y\>I  
当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择。 g*N~r['dZ  
df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。 R N5\,>+  
du可以查看文件及文件夹的大小。 {<\nl#}5S  
  两者配合使用,非常有效。比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结。 js^@tgf$x&  
  下面分别简要介绍 (8?t0}#t  
O/e5LA  
1.1 df命令 _UT>,c;h  
YjdCCju  
@N7X(@O  
//可以用来查看分区的文件系统df -T 7m~+HM\  
SpdQ<]  
7Y&W^]UZ0t  
df命令可以显示目前所有文件系统的可用空间及使用情形,请看下列这个例子: sTP`xaY  
df -h q{ItTvL  
?[hIv6c  
    参数 -h 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。 SQDllG84E  
    上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mounted on)分别是档案系统及其挂入点。我们可以看到 /dev/sda1 这个分割区被挂在根目录下。 -M2c8P:.b  
    接下来的四个字段 Size、Used、Avail、及 Use% 分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比。 FreeBSD下,当硬盘容量已满时,您可能会看到已使用的百分比超过 100%,因为 FreeBSD 会留一些空间给 root,让 root 在档案系统满时,还是可以写东西到该档案系统中,以进行管理。 dZFf /BXU  
q(p]6Ha|  
1.2 du命令   St7ZyN1  
sMlY!3{I x  
?){V7<'?y  
ps:实战经验,两者配合使用 VI: !#  
wa-#C,R\_#  
//查看系统中文件的使用情况df -h//查看当前目录下各个文件及目录占用空间大小du -sh *//方法一:切换到要删除的目录,删除目录下的所有文件rm -f *//方法二:删除logs文件夹下的所有文件,而不删除文件夹本身rm -rf log/* _CN5,mLNRk  
V]dzKNFi  
pKJ0+mN#"  
下面的删除方式暂未尝试。 Y> ElE-  
ls *.log | xargs rm -f 2XI%z4\)!  
DdDwMq  
qM%l  
|rW,:&;  
C]H'z  
du:查询文件或文件夹的磁盘使用空间 T6_LiB @  
    如果当前目录下文件和文件夹很多,使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是那个地方过大是不利的,所以得指定深入目录的层数,参数:--max-depth=,这是个极为有用的参数! T7+_/ Qh  
如下,注意使用“*”,可以得到文件的使用空间大小. fP 4  
    提醒:一向命令比linux复杂的FreeBSD,它的du命令指定深入目录的层数却是比linux简化,为 -d。 ))Q3;mI"  
U&x)Q  
du -h --max-depth=1 /home j !m42  
8/4i7oOC  
下面的命令与上面的命令有什么异同?? :x*#RnRr.  
答:du -h --max-depth=1 /home仅列出home目录下面所有的一级目录文件大小;du -h --max-depth=1 /home/* 列出home下面所有一级目录的一级目录文件大小。 2g'o5B\ *  
du -h --max-depth=1 /home/* [OTZ"XQLI  
1.3 查看linux文件目录的大小和文件夹包含的文件数 a[).'$S}'  
    统计总数大小 !u0|{6U  
    du -sh xmldb/ GJLe733o  
    du -sm * | sort -n //统计当前目录大小 并安大小 排序 \9FWH}|  
    du -sk * | sort -n uIeD.I'@{5  
    du -sk * | grep guojf //看一个人的大小 ;Nfd  
    du -m | cut -d "/" -f 2 //看第二个/ 字符前的文字 s"jNS1B  
    查看此文件夹有多少文件 /*/*/* 有多少文件 3d_PY,=1  
    du xmldb/ ZA;VA=)\8  
    du xmldb/*/*/* |wc -l 3jaY\(`%h  
    40752 F~qiNV  
    解释: wlY6h4c  
    wc [-lmw] BUp,bJpO  
    参数说明: `U~Y{f_!H  
    -l :多少行 HDTdOG)  
    -m:多少字符 4 Ii@_r>  
    -w:多少字 YflotlT}  
_:tclBc8R  
1.4 Linux:ls以K、M、G为单位查看文件大小 qZ39TTQ*p  
,Cj8{s&;  
JKFV7{ %Gl  
ps:注意man命令的使用,按“q”键可以退出man查询。 kZlRS^6  
GW(-'V/  
#man ls……-h, --human-readableprint sizes in human readable format (e.g., 1K 234M 2G)……# lscuss.war    nohup.out# ls -ltotal 30372-rw-r--r--    1 root root 31051909 May 24 10:07 cuss.war-rw-------    1 root root          0 Mar 20 13:52 nohup.out# ls -lhtotal 30M-rw-r--r--    1 root root 30M May 24 10:07 cuss.war-rw-------    1 root root     0 Mar 20 13:52 nohup.out# ll -htotal 30M-rw-r--r--    1 root root 30M May 24 10:07 cuss.war-rw-------    1 root root     0 Mar 20 13:52 nohup.out jaoGm$o>"F  
10/N-=NG18  
u%#s_R  
,H3C\.%w\  
2 删除系统日志等 #0-!P+c[  
tk^1Ga3  
{C%/>e2-%  
{PM)D [$i  
2.1 规范 ;3n0 bKDY  
K/~+bq# +  
@o+T<}kWX  
linux下删除指定文件之外的其他文件 xG_ ;F  
B{ NKDkDH  
一、Linux下删除文件和文件夹常用命令如下: z[Kxy1,  
删除文件: rm file  www.2cto.com   Z'GO p?  
删除文件夹: rm -rf dir 66=6;77  
需要注意的是, rmdir 只能够删除 空文件夹。 V/+r"le  
0D>~uNcT}  
二、删除指定文件(夹)之外的所有文件呢? tc@U_>{  
',0~\V  
I TJ>[c]x  
  • 需要在当前文件夹中进行: i~z:Fe{  
    #删除keep文件之外的所有文件rm -rf !(folder)#删除folder1和folder2文件之外的所有文件rm -rf !(folder1 | folder2)
dv%gmUUf}k  
  • 当前文件夹中结合使用grep和xargs来处理文件名: UL[4sv6\9  
    #删除keep文件之外的所有文件ls | grep -v keep | xargs rm  
<_ */  
说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。 vD) LRO Z  
好处:使用了grep来正则表达式来匹配文件名字,可以一次保留多个文件,从而进行更加准确的处理。 -baGr;,Cu  
&tD`~  
  • 使用find命令代替ls,改进方法3从而能够处理制定文件夹的文件: *^c4q|G.-  
    #删除当前test文件夹中keep文件之外的所有文件find ./test/ | grep -v keep | xargs rm
|gxU;"2`5~  
说明,用grep而不用find -name选取名字,因为find选取名字时比较麻烦,对正则表达式支持不够,无法排除指定文件名。 yixW>W}  
N,'JQch},8  
  • 直接使用find命令删除其他文件: 'QT(TF>  
    #删除keep以外的其他文件。find ./ -name '[^k][^e][^e][^p]*'  -exec rm -rf {} \;#删除keep以外的其他文件。推荐!find ./ -name '[^k][^e][^e][^p]*'  | xargs rm -rf  
lbg6n:@  
说明:上面第二行的代码效率高些,原因在于删除多个文件时 -exec会启动多个进程来处理,而xargs会启动一个rm进程来处理。 (G PJ=r  
a4`@z:l  
3 实践 ;S`Nq%,  
1uV_C[:  
c_ygwO3.Q  
删除要慎重 0^ E!P>  
/=e[(5X|O  
3.1 保留删除 n+Ag |.,|  
[7I|8  
4`8.\  
[img]https://images2015.cnblogs.com/blog/755171/201706/755171-20170628150241039-913260357.png[/img] _L$)~},cT  
=JVRm 2#*  
#删除生成 core,mbox等文件find / -name core|xargs rm –rf#删除日志rm -rf /var/log/* 'E&K%/d  
[qZ4+xF,,  
<BU|?T6~  
问题:日志文件中有很多文件,我想删除除debug.log 和sys.out 文件外的所有文件。 jQ^Ib]"K  
[img]https://images2015.cnblogs.com/blog/755171/201706/755171-20170628153440914-1932017001.png[/img] epG;=\f}m`  
首先我要能够找到debug.log和sys.out这两个文件—— _b5iR<f  
#建立查找规则vi test.txt^debug.log$^sys.out$ CqX%V":2  
尝试查找: RsOK5XnQn  
linux-hipe:/home/tws/server/basedata-server/logs # ls | grep -f test.txtdebug.logsys.out &&y@/<t  
删除要保留文件外的其它文件: dY|jV}%T  
ls | grep -vf test.txt |xargs rm#记得加v,保留要保留的文件,不要删错了 8/F2V?iT  
l|fd,  
#删除,文件名中带有数字,超过30天的日志:find -mtime +30 -name "*[0-9]*" -exec rm {} \;
 
只看该作者 安逸沙发  发表于: 02-22
ls -l |grep "^-"|wc -l `i*E~'  
xGg )Y#  
s};{ZAtE  
}2.`N%[  
find ./company -type f | wc -l #OD/$f_  
)9`qG:b'  
查看某文件夹下文件的个数,包括子文件夹里的。 5x4yyb'  
]72`};  
ls -lR|grep "^-"|wc -l "$^ ~!1~  
[!#L6&:a8  
查看某文件夹下文件夹的个数,包括子文件夹里的。 k"zv~`i'  
Yu^4VXp~M%  
ls -lR|grep "^d"|wc -l }@q`%uzi  
9 -a0:bP  
说明: Hd ={CFip  
j-}O0~Jz  
ls -l `e&Suyf4B  
y/7\?qfTk  
长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等) Ka V8[|Gn,  
AH7}/Rc  
grep "^-" I-(zaqp@  
0=1T.4+=  
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d 3bH'H*2  
c-6?2\]j@  
wc -l %l[( Iw  
U!\.]jfS  
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于 Kis"L(C  
BW*rIn<?G  
一行信息对应一个文件,所以也就是文件的个数。 `|& O*`  
K1yzD6[eW  
>_T-u<E  
#c.K/&Gc7j  
Linux查看文件夹大小 ; )@~  
.Vvx,>>D  
du -sh 查看当前文件夹大小 ope^~+c~\  
.Rs^YZF  
du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序 Ne1$ee. NE  
VQOezQs\  
du -sk filename 查看指定文件大小
快速回复

限100 字节
安逸网提示:如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
认证码:
上一个 下一个