Answers:
利用括号扩展:
du -b maybehere*/{*,.[^.],.??*}
或者
du -b maybehere*/{,.[^.],..?}*
其背后的逻辑可能并不明显,所以这里是解释:
*
匹配所有非隐藏文件.[^.]
匹配名称以单点开头而不是非点的文件;第一种形式只有2个字符的文件名。.??*
匹配至少3个字符长的隐藏文件..?*
像上面一样,但是第二个字符必须是一个点整个要点是排除指向当前目录和父目录(.
和..
)的硬链接,但要包括所有普通文件,以使每个普通文件仅被计数一次!
例如最简单的就是写
du -b maybehere*/{.,}*
这意味着,该列表包含一个点.
和“无”(没有什么是之间,
和关闭}
),因此所有隐藏文件(从一个点开始),所有非隐藏文件(从“一无所有”开始)将匹配。问题在于这也将与.
和匹配..
,并且这很可能不是您想要的,因此我们必须以某种方式将其排除。
关于支架扩张的最终决定。
括号扩展是一种机制,您可以通过编写更少的字符来在命令行中包含更多文件/字符串/任何内容。语法为{word1,word2,...}
,即它是一个以逗号分隔的字符串的列表,它们以{
和开头}
。bash
手册给出了一个非常基本的,同时又非常普遍的用法示例:
$ echo a{b,c,d}e
abe ace ade
{ }
,我不知道:(你能不能给我一个方向,以获得更多的信息关于它
man bash
“支撑扩展”一章。
.??*
不匹配.a
,.b
... .[^.]*
不匹配..foo
。
.foo
同时匹配.[^.]*
和.??*
。你要{.[!.],..?,}*
。
由于您已经在使用GNU特定语法(-b
):
du -abd1 maybehere*/
这样,它du
就是列出目录中的文件maybehere*
(并且不排除点文件)。-d1
将磁盘使用情况的报告限制为向下一级(包括带有的非目录-a
)。
否则,为了使glob包含隐藏文件(.
和除外..
),每个外壳程序都有自己的语法:
zsh
:
du -b maybehere*/*(D)
ksh93
:
(FIGNORE='@(.|..)'; du -b maybehere*/*)
bash
:
(shopt -s dotglob; du -b maybehere*/*)
tcsh
:
(set globdot; du -b maybehere*/*)
yash
:
(set -o dot-glob; du -b maybehere*/*)
尽管要提防它包括在包含它们的系统上,.
并且..
在包含它们的系统上readdir()
使它几乎不可用。
如果您只想列出隐藏目录或对隐藏目录进行操作,则可以像Costas所说的那样使用
du -b maybehere*/.*
这将允许您对隐藏的文件和目录进行操作。如果只需要隐藏目录,则可以使用
du -b maybehere*/.*/
maybehere*/.*
和maybehere*/*
hidden以及非隐藏文件
du -b
选择隐藏和非隐藏。
maybehere*/.*
所有内容