powershell - 列出所有不包含通配符匹配文件的目录

标签 powershell filesystems wildcard directory-structure

我需要能够列出根文件夹中不包含包含字符串 merged 的文件的所有目录。因此,例如,如果我从 C:\out 目录运行脚本,我将获得 C:\out 中与通配符 merged 不匹配的所有文件夹的列表。

示例:

树:

-c:\out
--c:\out\test123
---sample.meta
---sample_merged.meta
--c:\out\test456
---sample.meta
---sample_merged.meta
--c:\out\test789
---sample.meta
--c:\out\test013
---sample.meta

输出:
test789
test013

最佳答案

您可以使用 Get-ChildItem , Where-Object , 和 Select-String :

Get-ChildItem -Directory |
Where-Object { -not (Get-ChildItem $_ -File -Recurse -Filter *merged*) } |
Select-Object Name, LastWriteTime

下面是对每行的作用的解释:
  • 获取当前目录下的所有目录。
  • 设置一个过滤器,在每个目录中递归搜索包含字符串 merged 的文件名。 .如果没有找到,只传递目录。
  • 获取 NameLastWriteTime每个目录的属性。

  • 还要注意,如果需要,您可以更简洁地编写它:

    gci -dir | ? { !(gci $_ -file -recur -filter *merged*) } | select name, *w*time
    

    关于powershell - 列出所有不包含通配符匹配文件的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661751/

    相关文章:

    powershell - 通过 WAN 链接传输文件会导致损坏

    file - 如何根据行值拆分CSV文件

    java - Jrxml 无法通过 Jar 文件读取

    c - 如果我只知道linux中使用proc的进程名称,如何获取pid

    带有中通配符的 jQuery 复杂选择器?

    powershell - 将参数传递给 Pickles Cmdlet/Nuget 时,相对路径在 powershell 中不起作用

    powershell - System.IO.FileSystemWatcher 只在编辑过的文件上通知一次

    Hadoop hdfs 与 ext3

    python - 子进程通配符用法

    MySQL:(全文/索引)搜索 "one-word-columns"