如何列出给定目录中的所有文件和目录(包括完整路径但不递归)?

如何列出给定目录中的所有文件和目录(包括完整路径但不递归)?

有点像dir /b命令,但我还需要隐藏文件和系统文件。内置的 dir 命令不允许将此类“隐藏”文件与其他文件一起列出,我必须使用/s其中的完整路径,这当然是非递归的。

我也玩过 Windows 版本的ls命令,但同样没有成功。要显示完整路径,您必须mydir\*在列出的目录末尾添加星号 ( ),但这会使其递归。

答案1

如果您不想安装任何东西,您也可以使用以下命令:

for /f "delims=" %a in ('cd') do @for /f %b in ('dir /b /a') do @echo %a\%b

您必须cd先进入目录,否则它将不起作用。

答案2

尝试以下命令:

dir /s /b /a

它将提供所有文件,您可以根据FIND需要运行它或添加文件夹名称。

答案3

如果你尝试过 ls,为什么不直接安装 cygwin?你可以在 cygwin 中使用 find:

find -name "*"

如果您确实安装了 cygwin 并且想要在 cygwin 中使用 find,请确保使用完整路径调用 cygwin 中的 find,或者在 system32 之前插入 cygwin bin 路径,因为 Windows 也有一个 find.exe。

答案4

这是一个老问题,但无论如何我想补充一些内容。

DIR 无法正确遍历您想要的所有目录树,尤其是 C: 上的目录树。由于不同的保护措施,它只是在某些地方放弃。

ATTRIB 工作得更好,因为它能找到更多。(为什么会有这种差异?为什么 MS 会让一个实用程序以这种方式工作,而另一个实用程序在这方面以不同的方式工作?我真不知道。)根据我的经验,处理这个问题的最有效方法(尽管这是一个临时解决方案)是获取两个列表:

attrib /s /d C:\ >%TEMP%\C-with-directories.txt

attrib /s C:\ >%TEMP%\C-without-directories.txt

并获取它们之间的差异。差异是 C: 上的目录(除了隐藏得太好的目录)。对于 C:,我通常会以管理员身份运行此操作。

相关内容