列出所有子目录中的所有文件,而不是当前目录

列出所有子目录中的所有文件,而不是当前目录

有没有办法列出所有子目录中除当前目录中的文件之外的所有文件?

dir /s /b列出所有文件,包括当前目录中的文件。这不是我想要的。

答案1

使用 Powershell:

 Get-ChildItem .\*\*

编辑:

上面的例子确实只获取了第二级目录而不是子文件夹的内容。

@guest 的答案是更好的:

Get-ChildItem -Directory | ForEach-Object {Get-ChildItem -Recurse | Select-Object FullName}

答案2

解决方案有多种,我将尝试一一解释。


1)for /d %i in (*) do @dir /b /s "%i"
(*)扩展到当前目录中的所有文件。 for /d然后循环遍历所有目录(不包括常规文件),dir /b /s对每个目录执行。由于for回显已执行的命令,@因此用于抑制回显。

2)for /f "delims=" %i in ('dir /b /A:D') do @dir /b /s "%i"
'dir /b /A:D'返回当前目录中的所有目录,每个目录占一行。 "delims="指示for /f不要标记一行而是将整行分配给%ifor /f然后循环遍历所有行,dir /b /s对每一行执行。

在批处理文件中使用%%i而不是。%i

电源外壳
dir *\*仅返回 2 级目录中的文件。
dir -recurse *\*还返回更深层次目录中的文件,但不显示 2 级中的空文件夹。

正确的命令采用与
1)dir | where {$_.PsIsContainer} | foreach {dir -recurse $_} | foreach {echo $_.fullname}

2)dir -directory | foreach {dir -recurse $_} | foreach {echo $_.fullname}

相关内容