美文网首页
如何快速统计或清空目录中的文件

如何快速统计或清空目录中的文件

作者: 潘猛_9f76 | 来源:发表于2023-04-25 15:14 被阅读0次

1、目录为独立文件系统时可直接使用df查看

当目录为空时inode占用3

[root@host1 /]# ls -alR /mnt
total 0
drwxr-xr-x.  2 root root   6 Apr 26 10:32 .
dr-xr-xr-x. 17 root root 224 Apr 21 10:36 ..

[root@host1 /]# df -i | grep mnt
/dev/mapper/xfs_test-xfs_s   256000      3   255997    1% /mnt

在mnt中新建8个目录,并在其中一个目录中新建999个文件,目录和文件均会占用inode,所以inode占用999+8+3=1010

[root@host1 /]# df -i | grep mnt
/dev/mapper/xfs_test-xfs_s   256000   1010   254990    1% /mn

2、目录为非独立文件系统时

方法一:

[root@host1 /]#export dir=/boot
[root@host1 /]#expr $(ls -alR ${dir}  | grep '^d'| grep -v '[\.\.|\.]$' | wc -l) + $(ls -alR ${dir}  | grep '^[l|s|-]' | wc -l )
306

目录/boot的inode占用应该是 306+3=309

[root@host1 /]# df -i | grep boot
/dev/sda1                    524288    309   523979    1% /boot

方法二:

[root@host1 /]#export dir=/boot
[root@host1 /]#expr $(tree -a ${dir} | wc -l) - 3  
306

方法三:

[root@host1 /]#export dir=/boot
[root@host1 /]#expr $(rsync -avn /boot /tmp | wc -l) - 5
306

3、对比三种方法的效率

  • ls效率最低,需要20s,即使不考虑目录文件(涉及两次ls),也需要10s左右
  • rsync次之需要9s左右
  • tree效率最高需要6s左右
[root@host1 /]# export dir=/tmp
[root@host1 /]# time expr $(ls -alR ${dir}  | grep '^d'| grep -v '[\.\.|\.]$' | wc -l) + $(ls -alR ${dir}  | grep '^[l|s|-]' | wc -l )
525709

real    0m10.285s
user    0m4.668s
sys     0m6.161s
[root@host1 /]# time expr $(ls -alR ${dir}  | grep '^d'| grep -v '[\.\.|\.]$' | wc -l) + $(ls -alR ${dir}  | grep '^[l|s|-]' | wc -l )
525709

real    0m10.125s
user    0m4.440s
sys     0m6.293s
[root@host1 /]# time expr $(ls -alR ${dir}  | grep '^d'| grep -v '[\.\.|\.]$' | wc -l) + $(ls -alR ${dir}  | grep '^[l|s|-]' | wc -l )
525709

real    0m10.241s
user    0m4.775s
sys     0m6.017s
[root@host1 tmp]# time expr $(tree -a ${dir} | wc -l) - 3
525709

real    0m3.044s
user    0m1.631s
sys     0m1.420s
[root@host1 tmp]# time expr $(tree -a ${dir} | wc -l) - 3
525709

real    0m3.025s
user    0m1.600s
sys     0m1.475s
[root@host1 tmp]# time expr $(tree -a ${dir} | wc -l) - 3
525709

real    0m3.055s
user    0m1.655s
sys     0m1.455s
[root@host1 tmp]# time expr $(rsync -avn  ${dir} /tmp | wc -l) - 5
525709

real    0m3.886s
user    0m1.058s
sys     0m4.719s
[root@host1 tmp]# time expr $(rsync -avn  ${dir} /tmp | wc -l) - 5
525709

real    0m3.848s
user    0m1.095s
sys     0m4.485s
[root@host1 tmp]# time expr $(rsync -avn  ${dir} /tmp | wc -l) - 5
525709

real    0m3.829s
user    0m1.101s
sys     0m4.455s

4、rsync和tree哪个删除文件更快

使用rsync来删除,需要38s

[root@host1 /]# time rsync -av --delete-before  /empty/  /tmp/
sent 42 bytes  received 9,361,776 bytes  506,044.22 bytes/sec
total size is 0  speedup is 0.00

real    0m18.473s
user    0m0.742s
sys     0m19.293s

使用tree+xargs来删除,需要29s

[root@host1 /]# time tree -afi /tmp | xargs -n 1024 rm -f
real    0m14.336s
user    0m3.146s
sys     0m11.773s

相关文章

网友评论

      本文标题:如何快速统计或清空目录中的文件

      本文链接:https://www.haomeiwen.com/subject/bmqmjdtx.html