Linux上刪除大量文件幾種方式對比


Linux上刪除大量文件幾種方式對比


linux上刪除大量小文件刪除測試:刪除500000個小文件測試
生成文件:

$ for i in $(seq 500000);do echo 'text' >hello/$i.txt;done
$ du -sh hello
2.0G	hello

1. rm刪除:因為文件數量太多,rm無法刪除(報錯)

$ time rm -f *
-bash: /usr/bin/rm: Argument list too long

real	0m2.676s
user	0m2.340s
sys	0m0.272s

2. find查找刪除:-exec

-exec: 該參數是將查找的結果文件名,逐個傳遞給后面的命令執行,如果文件較多,會導致效率較低。
xargs: 該命令是將查找的結果一次性傳給后面的命令執行,效率比較高。但是不能操作文件名有特殊字符的文件。

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

real	7m16.154s
user	0m51.171s
sys	5m51.214s

3. find查找刪除:xargs

$ time find . -type f|xargs rm -rf

real	0m17.860s
user	0m1.021s
sys	0m8.838s

4. find調用-delete刪除

$ time find . -type f -delete

real	0m16.953s
user	0m0.535s
sys	0m8.866s

$ time find . -type f -delete

real	0m16.221s
user	0m0.578s
sys	0m8.098s

5. ls和xargs組合刪除

$ time ls|xargs -L 10000 rm -f

real	0m13.764s
user	0m2.856s
sys	0m8.630s

$ time ls|xargs -L 5000 rm -f

real	0m13.879s
user	0m3.053s
sys	0m8.622s

6. rsync delete刪除

--delete delete extraneous files from dest dirs
--delete-before receiver deletes before xfer, not during
--delete-during receiver deletes during the transfer
--delete-after receiver deletes after transfer, not during
$ mkdir blank # 建立空文件夾
$ time rsync -a --delete blank/ hello/

real	0m15.293s
user	0m0.590s
sys	0m12.397s

$ time rsync -a --delete blank/ hello/

real	0m14.833s
user	0m0.590s
sys	0m11.977s

$ time rsync -a --delete-before blank/ hello/

real	0m14.884s
user	0m0.602s
sys	0m12.147s

$ time rsync -a --delete-during blank/ hello/

real	0m15.468s
user	0m0.693s
sys	0m12.441s

$ time rsync -a --delete-after blank/ hello/

real	0m15.135s
user	0m0.600s
sys	0m12.253s

總結:

命令 時間 備注
rm 無法刪除 ...
find + -exec 7m16s 耗費時間太長
find + xargs 17s 時間較短
find + delete 16s 時間較短
ls + xargs 13s 時間短
rsync + delete 15s 時間短


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM