linux删除大量文件的6种方法
首先建立50万个文件testfor i in $(seq 1 500000)for> dofor> echo test >>$i.txtfor> done1. rmtesttime rm -f *zsh: sure you want to delete all the files in /home/hungerr/test [yn]? yzsh: argument l
·
首先建立50万个文件
test for i in $(seq 1 500000)
for> do
for> echo test >>$i.txt
for> done
1. rm
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
由于文件数量过多,rm不起作用
2. find
test time find ./ -type f -exec rm {} \;
find ./ -type f -exec rm {} \; 49.86s user 1032.13s system 41% cpu 43:19.17 total
大概43分钟。
3. find with delete
test time find ./ -type f -delete
find ./ -type f -delete 0.43s user 11.21s system 2% cpu 9:13.38 total
用时9分钟。
4. rsync
首先建立空文件夹blanktest,注意这个通常用来快速清空整个文件夹而不是单独删文件
~ time rsync -a --delete blanktest/ test/
rsync -a --delete blanktest/ test/ 0.59s user 7.86s system 51% cpu 16.418 total
16s,很好很强大。关于它为什么这么快,参考 https://liulantao.com/why-can-rsync-rapidly-delete-400000-files.html
5. Python
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脚本
~ python test.py
494.272291183
大概用时8分钟。
6. Perl
test time perl -e 'for(<*>){((stat)[9]<(unlink))}'
perl -e 'for(<*>){((stat)[9]<(unlink))}' 1.28s user 7.23s system 50% cpu 16.784 tota
更多推荐
已为社区贡献7条内容
所有评论(0)