Linux命令中这些特殊字符的含义是什么?

Linux命令中这些特殊字符的含义是什么?

根据https://www.cs.washington.edu/lab/faq/home-directory-size

要显示当前目录中包含的每个文件或子目录(包括隐藏文件和子目录)的聚合大小(按大小排序(最大的在前)),请运行以下命令:

du -sk * .??* | sort -nr

-sk管道之后和之前的符号是什么意思* .??*

作为一个额外的问题,我在哪里/如何使用 Google 找到这种东西(Linux 命令行中的特殊字符组合)?我尝试搜索,但找不到太多,因为它们只是标点符号。

答案1

它们是通常的文件名通配符或者全局或者模式匹配人物。?匹配任何单个字符、*任意数量的任意字符。

例外情况是文件名以点开头.,前导*不是匹配(所以它们是“隐藏”文件)。因此,*将匹配名称不以点开头的任何文件,并将.??*匹配名称以点开头且至少包含三个字符的任何文件。后者就是这样,因为它试图避免.and ..,但它也会错过eg .a

答案2

 du -sk * .??* | sort -nr

这完全是一个du:

  1. *(所有)子目录或文件
  2. .??*(所有)隐藏名称中至少有 2 个字符的目录或文件

然后对结果进行排序

@ilkkachu 提到.??*/ 只能用于显示目录

相关内容