Alistair Lobo Asked: 2018-07-21 01:46:22 +0800 CST2018-07-21 01:46:22 +0800 CST 2018-07-21 01:46:22 +0800 CST 有人可以解释 linux/unix 命令中 -- 和 ** 的含义吗?[复制] 772 du -ch -- **/*.jpg | grep total 特别是,--(双破折号)和**(双星号)的真正含义是什么? 使用 Z 外壳 zsh grep 2 个回答 Voted Best Answer Kusalananda 2018-07-21T02:00:59+08:002018-07-21T02:00:59+08:00 **inzsh匹配就像,*但允许/在路径名之间进行匹配。因此,该模式**/*.jpg将扩展为任何文件名后缀为.jpg当前目录中或下的任何位置的文件的路径名。 如果使用 启用,该**模式也可用。shell 也有它,如果启用了.bashshopt -s globstarksh93set -o globstar 防止以破折号开头的--任何路径名(与上述模式匹配)被解释du为命令行选项。--停止命令行解析寻找du更多选项。这不依赖于 shell,而是标准实用程序的 POSIX“实用程序指南”。 如果--文件名通配模式更改为./**/*.jpg. *.jpg该命令将通过从输出中提取包含总数的行来为您提供当前目录中或以下所有文件的总大小du(运行命令而不| grep total查看du生成的内容)。 Pavan Kate 2018-07-21T02:06:43+08:002018-07-21T02:06:43+08:00 来自 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) 正在做什么/或添加到输出中,这里可能没有必要。
**
inzsh
匹配就像,*
但允许/
在路径名之间进行匹配。因此,该模式**/*.jpg
将扩展为任何文件名后缀为.jpg
当前目录中或下的任何位置的文件的路径名。如果使用 启用,该
**
模式也可用。shell 也有它,如果启用了.bash
shopt -s globstar
ksh93
set -o globstar
防止以破折号开头的
--
任何路径名(与上述模式匹配)被解释du
为命令行选项。--
停止命令行解析寻找du
更多选项。这不依赖于 shell,而是标准实用程序的 POSIX“实用程序指南”。如果
--
文件名通配模式更改为./**/*.jpg
.*.jpg
该命令将通过从输出中提取包含总数的行来为您提供当前目录中或以下所有文件的总大小du
(运行命令而不| grep total
查看du
生成的内容)。来自 du 使用的手册页
--
- 通常意味着选项参数的结尾**/*.jpg
- glob 去查找与此路径匹配的所有路径 (foo/bar.jpg)|
-pipeTL;DR:这列出了从当前目录到目录中一步的 .jpg 格式的图片的总磁盘大小。
例如-如果您当前的目录正在
~/Pictures
运行,则此命令将递归列出所有 .jpg 文件的文件大小。(~/Pictures/EuropeTrip/pic134.jpg) [*] 表示所有正则表达式。不确定 (grep total) 正在做什么/或添加到输出中,这里可能没有必要。