Linux中名称与正则表达式匹配的文件的磁盘使用情况?

Cam*_*tin 38 regex linux bash diskspace sum

因此,在很多情况下我想知道我的磁盘空间有多少被使用,所以我知道要摆脱什么,转换为另一种格式,存储在别处(如数据DVD),移动到另一个分区,在这种情况下,我正在查看SliTaz Linux可启动媒体的Windows分区.

在大多数情况下,我想要的是文件和文件夹的大小,为此我使用基于NCurses的ncdu:

                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

一些说明:

  • -print0for find--files0-fromfor 的选项du可以避免文件名中的空格问题
  • 正则表达式与整个路径匹配,例如./dir1/subdir2/file.bak,不仅file.bak如此,因此如果您修改它,请将其考虑在内
  • 我使用hflag for du来生成一个"人类可读的"格式,但如果你想解析输出,你可能会更好k(总是使用千字节)
  • 如果删除该tail命令,您还将看到特定文件和目录的大小

旁注:一个很好的GUI工具,用于找出谁占用你的磁盘空间是FileLight.它没有正则表达式,但是非常方便查找阻塞磁盘的大目录或文件.

  • +1,看起来很酷!怎么样``s`为`du`?现在无法检查,但我相信`du`可以显示总计,而不需要`tail`.FileLight工具提醒了Gnome的磁盘使用分析器.尽管如此,我发现我在OP中提到的ncdu应用程序的"详细视图"界面更直接,但多样性很好:)(我已经打开了磁盘使用分析器,让某人从那个光滑的UI中思考什么我正在修理他的PC比它实际上更复杂......它有效!呵呵). (2认同)
  • 这里有一个缺陷。如图所示的查找将包括目录。du 然后将对目录和目录中的文件进行总计。嵌套目录将被多次计数。我建议在查找选择中使用“-type f”。 (2认同)

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)

这将回显您找到的所有文件的总大小(以字节为单位).

希望有所帮助.