如何快速的刪除大量檔案

2022-02-20 13:02:33 字數 2009 閱讀 1295

試驗場景:生成5000個1mb大小的檔案,然後用find刪除。

看結果說話:

[user@host test]$ for x in `seq

1000`; do

ddif=/dev/zero of=$x.dd count=1 bs=1mb 2>/dev/null; done

[user@host test]$

time

find . -type f -name "

*.dd

" -exec rm -rf {} \;

real 0m1.590s

user 0m0.120s

sys 0m1.125s

[user@host test]$

[user@host test]$

for x in `seq

1000`; do

ddif=/dev/zero of=$x.dd count=1 bs=1mb 2>/dev/null; done

[user@host test]$

time

find . -type f -name "

*.dd

" -delete

real 0m0.387s

user 0m0.002s

sys 0m0.385s

[user@host test]$

[user@host test]$

for x in `seq

1000`; do

ddif=/dev/zero of=$x.dd count=1 bs=1mb 2>/dev/null; done

[user@host test]$

time

find . -type f -name "

*.dd

" -exec rm -rf {} +real 0m0.387s

user 0m0.001s

sys 0m0.385s

[infa@wltscj1 test]$

[infa@wltscj1 test]$

for x in `seq

5000`; do

ddif=/dev/zero of=$x.dd count=1 bs=1mb 2>/dev/null; done

[infa@wltscj1 test]$

time

find . -type f -name "

*.dd

" -delete

real 0m2.176s

user 0m0.014s

sys 0m2.140s

[user@host test]$

[user@host test]$

for x in `seq

5000`; do

ddif=/dev/zero of=$x.dd count=1 bs=1mb 2>/dev/null; done

[user@host test]$

time

find . -type f -name "

*.dd

" -exec rm -rf {} +real 0m2.038s

user 0m0.012s

sys 0m2.020s

[user@host test]$

結論,下面這種寫法效率相對較高些:

find [options] -exec rm {} +

更好的方式:

#建立空白目錄

[user@host ~]$ mkdir blank/#刪除test目錄下的所有檔案:

[user@host ~]$ time rsync -a --delete-before blank/ test/real 0m1.906s

user 0m0.010s

sys 0m1.838s

[user@host ~]$

快速刪除大量小檔案

由於bash會展開例如 rm aa 這樣的命令 如果後面的檔案太多就會報引數太長,所以有時候刪除大量小檔案就不適合用rm了 可以使用find先查詢在刪除 就不會出現上面那種報錯問題,可是還有乙個問題檔案太多的話 exec rm 完全沒有效率,一兩個小時估計也就只能刪除幾十萬的檔案 對於需要刪除百萬為...

linux下快速刪除大量檔案

假如你要在linux下刪除大量檔案,比如100萬 1000萬,像 var spool clientmqueue 的mail郵件,像 usr local nginx proxy temp的nginx快取等,那麼rm rf 可能就不好使了。rsync提供了一些跟刪除相關的引數 rsync help gr...

linux快速刪除大量小檔案

在linux下面刪除大量資料夾的情況,如 需要刪除100萬個檔案或者資料夾。這個時候,我們本來的刪除命令rm rf 就不好使了,因為要等待的太久。所以必須要採取一些非常手段。我們可以使用rsync來實現快速 刪除大量檔案。方法如下 1.安裝rsync yum y install rsync 2.建立...