我如何列出其他(非当前)目录中的文件?

我如何列出其他(非当前)目录中的文件?

如果 ls 列出了当前目录的内容,是否有类似的命令可以列出非当前目录的内容,而无需使用 cd?

答案1

只需ls输入要列出的目录的路径,即可获得它。假设您在主目录中,但想要列出/etc。只需运行ls /etc,即可列出它。

答案2

ls将会这样做。

语法为ls

 ls flags file-or-directory-names

为了我所呼吁的file-or-directory-names,您可以列出当前目录中的文件,以便仅列出某些文件。例如,ls -l foo bar将仅列出有关foo和的信息bar(以长格式,因为我已给出标志-l)。ls baz*go将列出名称以开头baz和结尾的所有文件go(如果有)。

但当你给目录名称ls,它列出了那个目录而不是当前目录。

因此,要列出的内容/var/log,只需运行:

ls /var/log

如果你给相对的目录的路径——即不以 -- 开头的路径/,那么它将在当前目录中查找该目录(就像查找文件一样)。但它仍将列出内容目录,如您所愿。

附注:有时你可能会发现你不想列出内容目录,但只列出目录,就像列出文件一样。为此,您可以传递标志-d。例如,这将以/var/log长格式显示(而不是其内容,而是/var/log它本身):

ls -ld /var/log

答案3

看到被接受的答案后,我仍然不满意。丹尼尔是怎么知道答案的?当然,我自己也读过手册页,但还是不知道怎么回事。

的手册页内容ls如下:

描述:列出有关文件的信息(默认为当前目录)...

那里没什么用。然后我查看了 POSIX 程序员手册:

对于每个命名目录类型文件的操作数,ls 应写入目录中包含的文件的名称以及任何请求的相关信息。

这一行解释了可接受解决方案中命令的行为。FILE的操作数ls可以是目录,并将ls列出该目录的内容。 这正是 OP 想要的。 但 Linux 上的实现可能与此处的规范不同。 所以我们走在正确的轨道上,但还没有到达那里。

coreutils然后我搜索了 GNU软件包的手册,它ls是其中的一部分。以下是我找到的内容:

对于非选项命令行参数(目录)而言,默认情况下 ls 会列出目录的内容...

这就解释了。

相关内容