距离我最近的是使用powershell Get-ChildItem given multiple -Filters
2 Spring WebApplicationInitializers detected on classpath
我认为,具有多个参数的Get-ChildItem -Include "Intro", "*.mp4" -Recurse
是-Include
运算符。它提供带有“ Intro”文件夹或“ * .mp4”文件的文件夹。
但是我需要OR
条件。文件夹必须包含一个名为“ Intro”和“ * .mp4”文件的文件夹。
我需要结构如下的文件夹-
AND
更新1
我正在搜索符合两个条件的文件夹。
它必须具有一个名为E:.
└───test1.mp4
└───test2.mp4
└───test3.mp4
└───test4.mp4
└───test5.mp4
└───test6.mp4
└───Intro
并且
它必须具有Intro
个文件。
答案大概如下。
*.mp4
答案 0 :(得分:3)
您是否需要命令仅返回文件对象,还是还需要文件夹对象? 如果只是文件,我会这样:
Get-ChildItem -include "*.mp4" -Recurse -File | Where-Object {$_.Directory.Name -match 'Intro'}
因此,我们使用include来查找mp4文件并减少通过管道传输的对象数量。
然后,将其通过管道传递到Where-Object
并查找具有文件夹名称的属性,并说我们希望它包含单词“ intro”。如果该文件夹需要确切地称为Intro,而不仅仅是包含该文件夹,则可以将-match
更改为-eq
修改
要获取目录,我们可以这样:
(Get-ChildItem -include "*.mp4" -Recurse | Where-Object {$_.Directory.Name -match 'Intro'}).DirectoryName | Select-Object -Unique
现在,我们说找到的所有文件都符合搜索条件,我们希望查看这些文件的完整目录路径。
每个目录只能获得一个匹配项,因此,如果我们有一个目录与多个mp4文件匹配,并且我们不想在每个文件中一次看到同一目录,则可以将结果通过管道传递到{ {1}}只能看到每个目录一次。
编辑2
经过OP的澄清。
要找到一个同时包含mp4文件和一个名为intro的子文件夹的文件夹,我认为我们无法以任何已知的方式只能通过Get-ChildItem命令来做到这一点,因此我们可以像这样遍历每个文件夹:
Select-Object -Unique
我们通过管道传输到$Files = (Get-ChildItem -include "*.mp4" -Recurse -File).DirectoryName | Select-Object -Unique
foreach($File in $Files) {
Get-ChildItem -Path $File.DirectoryName -Recurse -Include 'Intro' -Directory
}
,以确保具有多个mp4文件的文件夹不会多次循环播放,从而使我们多次输出具有相同介绍文件夹的文件。
答案 1 :(得分:3)
只想添加另一种方法(单行)即可获取包含mp4 files
和文件夹Intro
的文件夹(多数情况下,该文件夹可能为@HenrikStanleyMortensen):
(Get-ChildItem -include "*.mp4" -Recurse -File).DirectoryName | Select-Object -Unique | Where-Object {(Get-ChildItem $_ -Recurse -Include 'Intro' -Directory)}