Linux 中 ls 命令的替代方法是什么?

Linux 中 ls 命令的替代方法是什么?

如何在不使用 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

相关内容