![如何列出给定目录中的所有文件和目录(包括完整路径但不递归)?](https://linux22.com/image/1312858/%E5%A6%82%E4%BD%95%E5%88%97%E5%87%BA%E7%BB%99%E5%AE%9A%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E5%92%8C%E7%9B%AE%E5%BD%95%EF%BC%88%E5%8C%85%E6%8B%AC%E5%AE%8C%E6%95%B4%E8%B7%AF%E5%BE%84%E4%BD%86%E4%B8%8D%E9%80%92%E5%BD%92%EF%BC%89%EF%BC%9F.png)
有点像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:,我通常会以管理员身份运行此操作。