此命令获取所有文件和大小
find . -type f | xargs -I x du -s x > /tmp/asd
比这个python脚本慢1000倍
import os
for dirpath, dirnames, filenames in os.walk("."):
for f in filenames:
print(f)
fp = os.path.join(dirpath, f)
if os.path.isfile(fp):
print(os.path.getsize(fp))
我在bash脚本中做错什么了吗?
目录结构有大约500万个文件
我建议使用以下内容:
find . -type f -exec stat --printf='%n %s\n' {} +
性能的主要提高来自避免为匹配的每个文件产生新的进程find
。可以使用来完成此操作xargs
,但是由于find
能够完全根据匹配的文件执行命令,因此我们最好删除另一个进程。
随着find
这是通过使用完成-exec ... +
(而不是-exec ... \;
(根据您的操作系统支持的参数的最大数量)),这将产生尽可能少的过程成为可能。
此外,我们使用更基本的方法stat
而不是du
查询文件的大小,这更接近于您在python脚本中所做的工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句