可以使用反斜杠字符\来区分特殊字符。但是,我想将完整句点视为正常字符来操作隐藏文件夹。例如:
ls -lh .
它将列出当前目录。但是,我想列出所有隐藏文件夹。我希望它可以与du -h
一起使用,因此我知道隐藏文件夹占用的磁盘空间。
答案 0 :(得分:7)
名称以.
开头的文件和目录仅在(a)ls
默认忽略它们的意义上是“隐藏”的,并且(b)通配符扩展将它们排除在外。在这两种情况下,如果您明确引用它们,则可以看到点文件。 *
扩展为所有非点文件; .*
扩展为所有点文件。
(其他工具和命令也可能将它们视为隐藏;例如,像Nautilus这样的GUI文件管理器默认情况下通常不会显示点文件,但通常会有一个显示它们的选项。)
ls -a
会覆盖名称以.
开头的文件的特殊处理。 ls -A
列出“隐藏”文件和文件夹,但不包括.
(此目录)和..
(父目录);某些版本的ls
可能不支持-A
。
据我所知,du
命令不会将点文件视为隐藏。 du -h
应该显示从当前目录开始的整个目录树。 (在一个小目录树中尝试,以确保你的行为方式。)
编辑:
我已经确认至少GNU coreutils版本的du
不会特别处理名称以.
开头的文件或目录;没有什么是隐藏的。
例如,这个脚本:
#!/bin/sh
mkdir -p .dot/.dot .dot/nodot nodot/.dot nodot/nodot
du -h
在我的系统上产生此输出(具体数字取决于文件系统的性质,与当前的讨论无关):
4.0K ./.dot/.dot
4.0K ./.dot/nodot
12K ./.dot
4.0K ./nodot/.dot
4.0K ./nodot/nodot
12K ./nodot
32K .
这符合您的要求吗?如果没有,你能更清楚地解释一下你在寻找什么吗?是否要列出所有目录,无论其名称是否以.
开头?您是否只想列出“隐藏”目录?您希望上述脚本创建的目录结构有什么输出?
答案 1 :(得分:1)
这个问题的错误地方,但它很简单:
ls -lhd .*
答案 2 :(得分:0)
ls -lh .*
怎么样? (这可能会回答你的问题)