如何以句点'''访问文件。在壳中

时间:2011-12-11 04:47:12

标签: linux shell

可以使用反斜杠字符\来区分特殊字符。但是,我想将完整句点视为正常字符来操作隐藏文件夹。例如:

ls -lh .

它将列出当前目录。但是,我想列出所有隐藏文件夹。我希望它可以与du -h一起使用,因此我知道隐藏文件夹占用的磁盘空间。

3 个答案:

答案 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 .*怎么样? (这可能会回答你的问题)