如何在不使用 ls 命令的情况下列出当前目录或任何目录路径内容?我们可以使用 echo 命令来做到这一点吗?
答案1
printf '%s\n' *
作为 shell 命令将列出当前目录中的非隐藏文件,每行一个。如果没有非隐藏文件,它将*
单独显示,除了在已修复该问题的 shell 中(csh、tcsh、fish、zsh、bash -O failureglob)。
echo *
将列出由空格字符分隔的非隐藏文件,除非(取决于 shell/echo 实现)第一个文件名以反斜杠字符开头-
或文件名包含反斜杠字符。
需要注意的是,shell*
在将其传递给命令之前将其扩展为文件列表。您可以在此处使用任何命令,例如head -- *
显示前几行(使用head
接受多个文件的实现),stat -- *
...
我想包含隐藏文件:
printf '%s\n' .* *
(根据外壳,还包括.
和..
)。和zsh
:
printf '%s\n' *(D)
在可以列出目录内容的其他应用程序(除了 shell glob 和ls
)中,还有find
:
find . ! -name . -prune
(包括隐藏文件,除了.
和..
)。
在 Linux 上,lsattr
(列出 Linux 扩展文件属性):
lsattr
lsattr -a # to include hidden files like with ls
答案2
如果您只想要目录内容列表:
find . -maxdepth 1
或任何其他目录:
find <dir> -maxdepth 1