有没有办法ls只显示目录而不是文件和目录?
从手册页:
-d, --directory
list directory entries instead of contents, and do not derefer?
ence symbolic links
Run Code Online (Sandbox Code Playgroud)
因此,如果我在/目录中键入它,我希望只看到目录。相反,它显示“。”
$ cd /
$ ls -d
.
Run Code Online (Sandbox Code Playgroud)
我期待ls -d向我展示这个:
$ ls -d
bin data home opt sbin sys var
boot dev lib media proc selinux tmp
cdrom etc lost+found mnt root srv usr
Run Code Online (Sandbox Code Playgroud)
有没有办法ls只显示目录而不是文件和目录?
Jde*_*eBP 49
您的期望基于 DOS Think/Windows Think 并且是错误的。在 MS-DOS、Windows 和其他一些 IBM/Microsoft 操作系统上,通配符扩展是由命令本身完成的,并且命令/a选项之类的东西dir在通配符扩展期间充当属性过滤器。 dir扩展像 一样的通配符*,命令解释器按原样传递给它,如果/a指定,它会将适当的过滤器应用于返回的内容。(在某些操作系统上,属性过滤器可以提供给枚举目录的系统调用,操作系统内核或其文件系统驱动程序会自行应用它们。)
在 Unices 和 Linux 上,通配符扩展由 shell 完成,并且不考虑权限。当,在根目录中,你做
ls *
什么ls命令本身接收来自壳(像)
ls bin home opt var boot dev tmp etc lost+found root usr
什么-d/--directory选项的作用是关闭一个通常情况下一个。接下来通常会ls依次查看每个参数,看到它们是目录,并决定枚举它们的内容。对于命名文件的参数,它只是打印出文件本身的信息。使用该-d选项,目录就像文件一样被处理。所以ls打印出作为参数传递的每个目录的信息,就像它们是文件一样。
所以-d 不是“仅打印目录”选项。事实上,不仅没有这样的选择;有不能是这样的选项。通配符扩展由 shell 完成,并且(sh至少在 POSIX中)无法告诉 shell 在扩展*为名称列表时检查权限和文件类型位。要单独获得目录名称的列表,必须使用find命令,如 所解释的ztank1013,或者使用以斜杠结尾的路径名暗示目录条目的技巧.,如所解释的Jin。(Jin的技巧以ls接收参数的命令 结束
ls bin/home/opt/var/boot/dev/tmp/etc/lost+found/root/usr/
因为模式*/实际上是在匹配路径名由两个部分组成,第二个是空的,所以没有相当做什么期望。特别是,它会将指向目录的符号链接视为目录。)
ls -dwithout a的行为是上述行为的*简单扩展。人们只需要了解一件事ls:当它没有给出任何参数时,它假定默认参数为.。现在没有的-d选项,上述行为导致的目录由名为内容.被枚举并显示其内容的信息。 使用该-d选项,目录将.被视为文件,并显示其自身的信息,而不是枚举其内容。
zta*_*013 13
尝试这个
find . -mindepth 1 -maxdepth 1 -type d
Run Code Online (Sandbox Code Playgroud)
只获取当前位置下的目录。
你可能还喜欢
tree -d
Run Code Online (Sandbox Code Playgroud)
它整齐地列出了所有目录和子目录,并带有树结构的图形描述。
如果您只想查看包含详细信息ls -l(如(ELL) 选项的目录),则可以使用以下命令:
find -maxdepth 1 -type d -ls;
Run Code Online (Sandbox Code Playgroud)
以上只会为您提供-l选项的详细信息。
| 归档时间: |
|
| 查看次数: |
66789 次 |
| 最近记录: |