如何快速統(tǒng)計(jì)或清空目錄中的文件

1、目錄為獨(dú)立文件系統(tǒng)時(shí)可直接使用df查看

當(dāng)目錄為空時(shí)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個(gè)目錄,并在其中一個(gè)目錄中新建999個(gè)文件,目錄和文件均會(huì)占用inode,所以inode占用999+8+3=1010

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

2、目錄為非獨(dú)立文件系統(tǒng)時(shí)

方法一:

[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占用應(yīng)該是 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、對(duì)比三種方法的效率

  • 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哪個(gè)刪除文件更快

使用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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容