Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在LNUX/UNIX下有没有快速计算文件夹大小的方法_Bash - Fatal编程技术网

Bash 在LNUX/UNIX下有没有快速计算文件夹大小的方法

Bash 在LNUX/UNIX下有没有快速计算文件夹大小的方法,bash,Bash,我有很多文件夹,每个文件夹大约150GB。是的,整个仓库很大。我使用Linux命令行: for dir in `ls myfolder` do du -sh $dir >> statistics.log done 非常慢,已经运行了3天。有什么快速的方法可以做到这一点吗??非常感谢不要使用for循环。du命令接受一个路径,因此为它指定所需的路径,并且不使用循环。例如,请参见:.不要使用For循环。du命令接受一个路径,因此为它指定所需的路径,并且不使用循环。例如,请参阅:.

我有很多文件夹,每个文件夹大约150GB。是的,整个仓库很大。我使用Linux命令行:

for dir in `ls myfolder`
do
    du -sh $dir >> statistics.log
done


非常慢,已经运行了3天。有什么快速的方法可以做到这一点吗??非常感谢

不要使用for循环。du命令接受一个路径,因此为它指定所需的路径,并且不使用循环。例如,请参见:.

不要使用For循环。du命令接受一个路径,因此为它指定所需的路径,并且不使用循环。例如,请参阅:.

您可以只执行
du-sh/path/*
也可以阅读
updatedb
的相关内容,一旦完成,它可能会在后台更新您的索引,您可能会体验到使用
du

的性能提升,您可以只执行
du-sh/path/*
操作,还可以阅读有关
updatedb
的内容,一旦完成,它可能会在后台更新您的索引,使用
du

du-sh文件夹
返回500GB以下的文件夹大小需要不到一秒钟的时间,但这还取决于每个文件夹中有多少文件和子文件夹。每个文件夹的文件和子文件夹的总数是多少?我认为这个脚本根本不起作用
ls myfolder
只返回文件名。然后,它将在当前目录中查找这些文件名,而不是在
myfolder
下。这永远不会花这么长时间。我想最多几分钟。也许是时候运行
fsck
?顺便说一句,文件夹中有多少数据并不重要。问题是有多少个文件。如果您有一个150GB的文件,
du
将立即计算其大小。如果您有一百万个单字节的文件,则需要一段时间才能将它们添加到一百万字节。@rici特别是对于旋转盘片,并行可能会在寻道时间杀死您,具体取决于文件系统的布局。网络案例可能是唯一有帮助的案例,但正如您所说,在文件服务器上运行作业。
du-sh folder
返回500GB以下的文件夹大小需要不到一秒钟的时间,但这还取决于每个文件夹中有多少文件和子文件夹。每个文件夹的文件和子文件夹的总数是多少?我认为这个脚本根本不起作用
ls myfolder
只返回文件名。然后,它将在当前目录中查找这些文件名,而不是在
myfolder
下。这永远不会花这么长时间。我想最多几分钟。也许是时候运行
fsck
?顺便说一句,文件夹中有多少数据并不重要。问题是有多少个文件。如果您有一个150GB的文件,
du
将立即计算其大小。如果您有一百万个单字节的文件,则需要一段时间才能将它们添加到一百万字节。@rici特别是对于旋转盘片,并行可能会在寻道时间杀死您,具体取决于文件系统的布局。网络案例可能是唯一有帮助的案例,但正如您所说,在文件服务器上运行作业。为什么不在这里使用循环呢?谢谢!假设文件夹是给定树路径中的所有节点,du命令将为您执行循环。如果您有不相交的特定路径列表,例如在两个单独的磁盘中,并且您想要du-bot,那么您可以使用循环。请查看链接以获取示例。谢谢~但我的案例中确实需要循环。我在考虑使用多线程来加速进程。为什么不在这里使用循环呢?谢谢!假设文件夹是给定树路径中的所有节点,du命令将为您执行循环。如果您有不相交的特定路径列表,例如在两个单独的磁盘中,并且您想要du-bot,那么您可以使用循环。请查看链接以获取示例。谢谢~但我的案例中确实需要循环。我想用多线程来加速进程。我试过你的方法,它还需要很长时间才能运行,可能我必须用多线程来实现这一点。我试过你的方法,它还需要很长时间才能运行,可能我必须用多线程来实现这一点。。