有人可以解释 linux/unix 命令中 -- 和 ** 的含义吗?

有人可以解释 linux/unix 命令中 -- 和 ** 的含义吗?
du -ch -- **/*.jpg | grep total

特别是,--(双破折号)和**(双星号)的真正含义是什么?

使用 Z 外壳

答案1

in与 类似,但允许跨**in路径名匹配。因此,该模式将扩展到具有当前目录中或以下任意位置的文件名后缀的任何文件的路径名。zsh*/**/*.jpg.jpg

如果启用了 ,则该模式在 中也**可用。如果启用了 ,则 shell 也有该模式。bashshopt -s globstarksh93set -o globstar

防止--任何以破折号开头的路径名(与上述模式匹配)被解释为du命令行选项。停止--命令行解析du以查找进一步的选项。这不依赖于 shell,而是 POSIX”实用指南“对于标准实用程序。

如果--文件名通配模式更改为./**/*.jpg.

*.jpg该命令将通过从输出中提取包含总计的行来提供当前目录中或当前目录下所有文件的总大小du(运行该命令而不| grep total查看du产生的内容)。

答案2

来自 du 用法的手册页

du [OPTION][PARAM]

du - lists disk space used by files

c - displays total 
h - human readable format (24M= meaning 24 MB)

--- 通常表示选项参数结束
**/*.jpg- glob 查找与此路径匹配的所有路径 (foo/bar.jpg)
|-pipe

 grep total- this option is not required and is redundant, since -c[OPTION] is giving you grand total anyways.

TL;DR:列出当前目录下一级目录中.jpg格式图片的磁盘总大小。

例如-如果您当前的目录正在~/Pictures运行,则运行此命令将递归地列出内部所有 .jpg 文件的文件大小。(~/Pictures/EuropeTrip/pic134.jpg) [*] 表示全部用于正则表达式。

不确定 (grep Total) 正在做什么/或添加到输出中,这里可能没有必要。

相关内容