ls --directory代表什么?


17

在我的Ubuntu版本中,man ls具有有关--directory的下一个信息:

list directory entries instead of contents, and do not dereference symbolic links

所以我有点困惑。我使用了该命令,ls --directory并且希望包含所有目录的列表,但是我得到了.

那么究竟是什么ls --directoryls -d做什么?

Answers:


24
$ man ls
...
-d, --directory
              list directories themselves, not their contents

当前目录表示为.,这ls -d就是清单。

当前目录内的目录是该目录的内容,因此不显示此选项。

-d在别名中使用该选项来显示隐藏的文件和目录

alias l.='ls -dC .* --color'

没有-d,这也会列出隐藏目录的内容,这不是我想要的。

它的另一个用途是当我想使用该-l选项而不是其内容查看目录的元数据时:

$ ls -ld playground
drwxr-xr-x 72 zanna zanna 12288 Mar  1 23:10 playground

如果您想要当前目录中的目录列表,可以使用

ls -d */

ls -dC .* --color还列出了隐藏文件,而不仅仅是目录。
波丘罗

1
是的@PauChorro我实际上在回答中说了这一点。我用它来显示所有隐藏的文件和目录
Zanna

1
@PauChorro我添加了一种仅列出目录的方法
Zanna

1
在我的Ubuntu版本中,它man ls具有下一个信息:list directory entries instead of contents, and do not derefer‐ ence symbolic links。因此,在您的版本中可以更好地说明其实际功能。
保罗·乔罗

1
@ Pilot6它会列出文件太多
赞纳

11

ls仅与with一起使用-d几乎是没有用的。它提供有关目录本身的信息。它没有列出其内容。

这就是为什么您看不到目录列表的原因。您希望看到的目录是当前目录的“内容”

如果仅运行,ls -d它将通过显示当前目录.

如果使用其他键(如)运行它是有意义的-l

ls -ld 将显示当前目录的权限。

pilot6@Pilot6:~$ ls -ld
drwxrwxr-x 1 pilot6 pilot6 2570 Mar  4 12:14 .

您还可以查看其他任何目录的权限,例如

ls -ld /bin

pilot6@Pilot6:~$ ls -ld /bin
drwxr-xr-x 1 root root 2584 Feb 25 15:19 /bin

如果不运行ls -l-d将显示当前目录中文件和文件夹的所有权限列表。如果您不需要它,这就是ls -ld用法的一个很好的例子。

您可以通过以下方式列出当前目录中的目录:

ls -d */

6

单独使用ls -d是没有用的,因为没有参数它总是返回.。在指定参数之后,它还是有意义的。例如,如果您的用户名是,rick并且您想查看家庭使用的所有目录:

$ ls -d /home/rick/*/
/home/rick/AAC/        /home/rick/EnhanceIO/         /home/rick/silentcast/
/home/rick/assembly/   /home/rick/EnhanceIO-master/  /home/rick/Templates/
/home/rick/bin/        /home/rick/log/               /home/rick/test/
/home/rick/Desktop/    /home/rick/Music/             /home/rick/tmpe/
/home/rick/Documents/  /home/rick/Pictures/          /home/rick/Videos/
/home/rick/Downloads/  /home/rick/Public/

5

让我举例说明:

  1. ls:列出目录的内容

  2. ls -dls --directory:列出目录本身,而不是目录内容

例子:

ls -d android-sdk-linux/

# result
android-sdk-linux/

ls android-sdk-linux/

# result
add-ons  build-tools  platforms  platform-tools  SDK Readme.txt  temp  tools

您的ls -d这种情况表明仅列出我所在的目录,而不显示其目录(即.Linux术语),因此结果是:.

但是,如果您说过:ls,那么您将看到当前目录中存在的所有内容.


4

ls -d列出目录本身而不是目录。文件被列为正常文件。查看man ls所有选项的描述。

. 是它自己的目录,与从当前目录运行命令时使用的目录相同, ./runscript.sh

..是父目录,是当前目录的父目录,cd ..以便在目录层次结构中上移

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.