查找只有一个文件的文件夹

Pwd*_*wdr 2 windows-7 command-line

我需要查找并删除 C:\parent 中仅包含一个文件的所有文件夹。文件夹结构是扁平的(没有子文件夹):

C:\parent\folder1\file1
C:\parent\folder1\file2
C:\parent\folder2\file1 <-- Delete folder2
C:\parent\folder3\file1 <-- Delete folder3
C:\parent\folder4\file1
C:\parent\folder1\file2
C:\parent\folder1\file3
Run Code Online (Sandbox Code Playgroud)

任何人都可以推荐一个程序/脚本来做到这一点?由于我对终端命令不是很熟悉,因此获得某种演练会很棒..

谢谢!

Ind*_*rek 6

使用 PowerShell 足够简单:

cd C:\Parent
Get-ChildItem | Where-Object { $_.IsPSContainer -and @(Get-ChildItem $_).Count -eq 1 } | Remove-Item -Recurse
Run Code Online (Sandbox Code Playgroud)

说明

  • 第二行由多个命令组成,每个命令的输出都使用|(管道)字符发送到下一个命令。

  • Get-ChildItem 返回当前文件夹中所有文件和文件夹的列表。

  • Where-Object允许我们过滤该列表,以仅获取符合条件的文件夹。$_指的是每次迭代的当前对象。

    • $_.IsPSContainer 仅对文件夹返回 true,因此这允许我们排除父目录中的任何文件。

    • @(Get-ChildItem $_).Count -eq 1仅适用于其中恰好包含 1 个文件或子文件夹的文件夹。当只有 1 个项目时,该@标志对于该Count属性正常工作是必要的(请参阅此处的说明)。

  • 最后,Remove-Item删除通过过滤器的每个文件夹。-Recurse自动删除非空文件夹需要该参数;没有它,PowerShell 每次都会提示你。