linux下刪除大量小檔案方法彙總

2021-07-09 06:01:22 字數 4156 閱讀 5152

除了鏈結中提到的下列六種方法外,再補充一種方法,並附加測試過程:

for i in $(seq 1 500000)

for> do

for> echo test >>$i.txt

for> done

test time rm -f *

zsh: sure you want to delete all the files in /home/hungerr/test [yn]? y

zsh: argument list too long: rm

rm -f * 3.63s user 0.29s system 98% cpu 3.985 total

test time find ./ -type f -exec rm {} \;

find ./ -type f -exec rm {} \; 49.86s user 1032.13s system 41% cpu 43:19.17 total

test time find ./ -type f -delete

find ./ -type f -delete 0.43s user 11.21s system 2% cpu 9:13.38 total

~ time rsync -a --delete blanktest/ test/

rsync -a --delete blanktest/ test/ 0.59s user 7.86s system 51% cpu 16.418 total

import os

import time

stime=time.time()

for pathname,dirnames,filenames in os.walk('/home/username/test'):

for filename in filenames:

file=os.path.join(pathname,filename)

os.remove(file)

ftime=time.time()

print ftime-stime

~ python test.py

494.272291183

test time perl -e 'for(<*>)'

perl -e 'for(<*>)' 1.28s user 7.23s system 50% cpu 16.784 total

補充通過刪除目錄來刪除目錄下面的檔案,然後再重建目錄。

比如刪除oracle裡的audit目錄:

rm -fr adump

測試環境:meminfo 2gb,cpu 1

下面將執行rm -fr test,用時10秒

[root@localhost ~]# echo "<< start test :`date`>>";df -i;mkdir test;cd test;echo "<< start create file :`date`>>";for i in $(seq 1 500000);do echo test >> $i.txt ;done;echo "<< end file created :`date`>>";df -i ;cd .. ; echo "<< start delete file :`date`>>";rm -fr test ;echo "<< end delete file :`date`>>"; df -i ;

<< start test :2023年 12月 31日 星期四 02:16:04 cst>>

檔案系統 inode 已用(i) 可用(i) 已用(i)%% 掛載點

1020000 93395 926605 10% /

tmpfs 186844 3 186841 1% /dev/shm

/dev/sda1 128016 39 127977 1% /boot

<< start create file :2023年 12月 31日 星期四 02:16:04 cst>>

<< end file created :2023年 12月 31日 星期四 02:16:44 cst>>

檔案系統 inode 已用(i) 可用(i) 已用(i)%% 掛載點

1020000 593396 426604 59% /

tmpfs 186844 3 186841 1% /dev/shm

/dev/sda1 128016 39 127977 1% /boot

<< start delete file :2023年 12月 31日 星期四 02:16:44 cst>>

<< end delete file :2023年 12月 31日 星期四 02:16:54 cst>>

檔案系統 inode 已用(i) 可用(i) 已用(i)%% 掛載點

1020000 93395 926605 10% /

tmpfs 186844 3 186841 1% /dev/shm

/dev/sda1 128016 39 127977 1% /boot

[root@localhost ~]#

下面將執行find . -type f -exec rm {} \;

,用時15分鐘

[root@localhost ~]# echo "<< start test :`date`>>";df -i;mkdir test;cd test;echo "<< start create file :`date`>>";for i in $(seq 1 500000);do echo test >> $i.txt ;done;echo "<< end file created :`date`>>";df -i ; echo "<< start delete file :`date`>>";find . -type f -exec rm {} \;;cd .. ;rm -fr test ;echo "<< end delete file :`date`>>"; df -i ;

<< start test :2023年 12月 31日 星期四 02:44:39 cst>>

檔案系統 inode 已用(i) 可用(i) 已用(i)%% 掛載點

1020000 93319 926681 10% /

tmpfs 186844 3 186841 1% /dev/shm

/dev/sda1 128016 39 127977 1% /boot

<< start create file :2023年 12月 31日 星期四 02:44:39 cst>>

<< end file created :2023年 12月 31日 星期四 02:45:19 cst>>

檔案系統 inode 已用(i) 可用(i) 已用(i)%% 掛載點

1020000 593320 426680 59% /

tmpfs 186844 3 186841 1% /dev/shm

/dev/sda1 128016 39 127977 1% /boot

<< start delete file :2023年 12月 31日 星期四 02:45:19 cst>>

<< end delete file :2023年 12月 31日 星期四 03:00:34 cst>>

檔案系統 inode 已用(i) 可用(i) 已用(i)%% 掛載點

1020000 93317 926683 10% /

tmpfs 186844 3 186841 1% /dev/shm

/dev/sda1 128016 39 127977 1% /boot

[root@localhost ~]#

[root@localhost ~]#

Linux 快速刪除大量小檔案方法

linux 快速刪除大量小檔案方法 當我們在linux系統中要刪除數萬或者數十萬甚至數百萬的檔案時使用rm rf 就不太好用,因為要等待很長一段時間。在這種情況之下我們可以使用linux系統命令rsync來巧妙的處理。rsync實際上用的是替換原理,處理數十萬個檔案也是秒刪。1.rsync安裝,有些...

Linux 快速刪除大量小檔案方法

如果某個掛載點上有大量小檔案存在,會占用較多的inodes資源 一但inodes資源耗盡,即便是該掛載裝置還有空閒空間,也是無法存入新的檔案的 查詢inodes資源使用較高的掛載點 df i head 1 df i grep v filesystem awk f 查詢inodes資源使用超過10 的...

linux快速刪除大量小檔案方法

當我們在linux系統中要刪除數萬或者數十萬甚至數百萬的檔案時使用rm rf 就不太好用,因為要等待很長一段時間。在這種情況之下我們可以使用linux系統命令rsync來巧妙的處理。rsync實際上用的是替換原理,處理數十萬個檔案也是秒刪。1.rsync安裝,有些系統預設安裝有該命令 ubuntu系...