Cam*_*tin 38 regex linux bash diskspace sum
因此,在很多情况下我想知道我的磁盘空间有多少被使用,所以我知道要摆脱什么,转换为另一种格式,存储在别处(如数据DVD),移动到另一个分区,在这种情况下,我正在查看SliTaz Linux可启动媒体的Windows分区.
在大多数情况下,我想要的是文件和文件夹的大小,为此我使用基于NCurses的ncdu:
但在这种情况下,我想要一种方法来获得匹配正则表达式的所有文件的大小..bak文件的示例正则表达式:
.*\.bak$
Run Code Online (Sandbox Code Playgroud)
考虑到具有核心GNU实用程序或BusyBox的标准Linux,我如何获得这些信息?
编辑:输出旨在由脚本解析.
Mic*_*ski 45
我建议像: find . -regex '.*\.bak' -print0 | du --files0-from=- -ch | tail -1
一些说明:
-print0
for find
和--files0-from
for 的选项du
可以避免文件名中的空格问题./dir1/subdir2/file.bak
,不仅file.bak
如此,因此如果您修改它,请将其考虑在内h
flag for du来生成一个"人类可读的"格式,但如果你想解析输出,你可能会更好k
(总是使用千字节)tail
命令,您还将看到特定文件和目录的大小旁注:一个很好的GUI工具,用于找出谁占用你的磁盘空间是FileLight.它没有正则表达式,但是非常方便查找阻塞磁盘的大目录或文件.
Mad*_*ker 24
du
是我最喜欢的答案.如果您有固定的文件系统结构,则可以使用:
du -hc *.bak
Run Code Online (Sandbox Code Playgroud)
如果您需要添加子目录,只需添加:
du -hc *.bak **/*.bak **/**/*.bak
Run Code Online (Sandbox Code Playgroud)
等等
但是,这不是一个非常有用的命令,所以使用你的find:
TOTAL=0;for I in $(find . -name \*.bak); do TOTAL=$((TOTAL+$(du $I | awk '{print $1}'))); done; echo $TOTAL
Run Code Online (Sandbox Code Playgroud)
这将回显您找到的所有文件的总大小(以字节为单位).
希望有所帮助.
归档时间: |
|
查看次数: |
21542 次 |
最近记录: |