我有一个PowerShell脚本,它使用du.exe(最初来自Sysinternals的磁盘使用情况)来计算目录的大小.
如果我du c:\Backup在控制台中运行,它按预期工作,但在ISE或PowerGui中运行的相同代码行给出了预期的结果加上错误
+ du <<<< c:\backup
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Run Code Online (Sandbox Code Playgroud)
这是为什么?如何避免此错误?我尝试使用invoke-expression &,但是没有去.
谢谢您的帮助.
我有一个备份系统,它创建以Unix时间戳命名的目录,然后使用硬链接系统(rsync中的--link-dest)创建增量备份,因此通常第一个备份非常大,然后后续备份就像分数一样大.
这是我当前备份的输出:
root@athos:/media/awesomeness_drive# du -sh lantea_home/*
31G lantea_home/1384197192
17M lantea_home/1384205953
17M lantea_home/1384205979
17M lantea_home/1384206056
17M lantea_home/1384206195
17M lantea_home/1384207349
3.1G lantea_home/1384207678
14M lantea_home/1384208111
14M lantea_home/1384208128
16M lantea_home/1384232401
15G lantea_home/1384275601
43M lantea_home/1384318801
Run Code Online (Sandbox Code Playgroud)
一切似乎都是正确的,但是,例如最后一个目录,lantea_home/1384318801:
root@athos:/media/awesomeness_drive# du -sh lantea_home/1384318801/
28G lantea_home/1384318801/
Run Code Online (Sandbox Code Playgroud)
我一直都是这种行为,为什么第二个du命令会将目录视为28G?
注 - 输出与-P和-L标志保持一致.
我试图评估一些Unix用户帐户的磁盘使用情况.简单地说,我使用以下命令:
du -cBM --max-depth=1 | sort -n
Run Code Online (Sandbox Code Playgroud)
但我看到很多错误信息如下.如何从显示中排除所有此类"权限被拒绝"的消息?
du: `./james/.gnome2': Permission denied
Run Code Online (Sandbox Code Playgroud)
通过将"find"替换为"du",我的请求可能与以下列表非常相似.
以下线程不起作用.我想我正在使用bash.
如何从ncdu扫描中排除目录?
我在man ncdu页面中找不到信息。
这样做时,ncdu -x /它扫描了我的/home/tmp目录将近一个小时。
谢谢你的帮助。
在Linux中,我键入du -sh * | sort -rh以显示当前目录中的文件和目录,从最大到最小排序.
我如何在OSX终端中执行此操作,最好不要额外安装任何东西?
为什么输出du往往如此不同du -b?-b是简写--apparent-size --block-size=1.只使用--apparent-size大部分时间给我相同的结果,但--block-size=1似乎做了伎俩.我想知道输出是否正确,哪个数字是我想要的?(即实际文件大小,如果复制到另一个存储设备)
如何du按字母顺序列出命令的结果?
我知道我可以使用find命令按字母顺序列出它们,但没有目录大小,我也使用-maxdepth两个命令的选项,以便列表只在一个子目录下.
这是斜体的问题:
编写一个实现目录大小分析器的shell脚本.在您的脚本中,您可以使用常见的Linux命令.该脚本应列出给定参数的每个直接子目录占用的磁盘存储或当前目录(如果没有给出参数),子目录名称按字母顺序排序.此外,列出具有最高磁盘使用率的子目录的名称及其存储大小.如果多个子目录具有相同的最高磁盘使用率,请列出其中任何一个子目录.包括有意义的简短评论.适用于此脚本的bash命令列表包括以下但不限于:cat,cut,du,echo,exit,for,head,if,ls,rm,sort,tail,wc.您可以使用bash变量以及临时文件来保存中间结果.在执行结束时删除所有临时文件.
输入du $dir -hk --max-depth=2 | sort -o temp1.txt然后cat temp1.txt在命令行中输入以下结果:
12 ./IT_PLAN/Inter_Disciplinary
28 ./IT_PLAN
3 ./IT_PLAN/Core_Courses
3 ./IT_PLAN/Pre_reqs
81 .
9 ./IT_PLAN/IT_Electives
Run Code Online (Sandbox Code Playgroud)
它应该如下所示:
28 ./IT_PLAN
3 ./IT_PLAN/Core_Courses
12 ./IT_PLAN/Inter_Disciplinary
9 ./IT_PLAN/IT_Electives
The subdirectory with the maximum disk space use:
28 ./IT_PLAN
Run Code Online (Sandbox Code Playgroud)
再一次,我无法按字母顺序排序结果.
我正在尝试使用磁盘使用工具查看我的主目录文件夹有多大,但它也打印出以dot开头的文件夹和文件.
我似乎无法过滤掉它们.
du -h --exclude="?"
du -h | grep -v "?"
du -h | grep -ve "?"
du -h | sed "?"
Run Code Online (Sandbox Code Playgroud)
提前致谢.
编辑>谢谢SiegeX的回答.
du -h --max-depth=1 | grep -v "./\\."
Run Code Online (Sandbox Code Playgroud)
由于dot匹配任何字符,因此我们必须使用双反斜杠作为前缀,因为它也是一个特殊字符.
当我尝试计算目录中文件和目录的大小时,需要更长的时间.我用的命令是du -ch --max-depth=1.
有没有其他方法来计算文件和文件夹的总大小?
谢谢
我有一个程序,我从文件中加载文本,然后根据其中一个字段过滤它.我感兴趣的是此过滤步骤后的数据大小.
理想情况下,我可以做类似的事情: awk '$2>=10' <myfile | du -
我可以只应用过滤器并将输出保存在某处,在其上调用du,然后删除该文件,但文件非常大,因此写入磁盘可能需要一段时间.
认识到du代表"磁盘使用",我怀疑我会问一些没有意义的东西,考虑到程序是如何工作的.如果有另一个常用的实用程序,请建议它!