使用powershell进行文件系统查询

时间:2015-08-04 10:02:16

标签: powershell

我有一个高级shell问题,我搜索了一个没有运气的答案/例子。

查询: 我想获得N个最新的文件夹文件(没有子文件夹),条件是该文件夹包含foo.xml。

实施例 输入:根文件夹= Z

Z:..... \ A \ B \ foo.xml

Z:..... \ A \ B \跳回到bar.txt

Z:..... \ A \ B \ C \ koo.txt

Z:..... \ A \ foo.xml

Z:..... \ A \ abc.doc

Z:..... \ d \ xyz.xls

查询的输出

Z:..... \ A \ B \ foo.xml

Z:..... \ A \ B \跳回到bar.txt

Z:..... \ A \ foo.xml

Z:..... \ A \ abc.doc

我想用powershell来实现性能(更高语言的循环,太慢了)。

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是:

  1. 查找所有" foo.xml"整个树
  2. 查找父目录中的最新文件
  3. 输出他们的FullName(他们的路径)属性
  4. 这应该做:

    funtion Get-NewestFooFileSibling {
        param(
            [string]$RootPath = 'Z:',
            [string]$FooFile  = 'foo.xml',
            [int]$N = 10
        )
    
        # Find the foo.xml files, pipe their paths to foreach-object
        Get-ChildItem -Filter $FooFile -Recurse -File -Name |ForEach-Object {
            # Find all sibling files (files in the same directory)
            # sort by when they were created and select only the first $N files
            Get-ChildItem -Path (Split-Path $_ -Parent) -File |Sort CreationTime -Descending |Select-Object -ExpandProperty FullName -First $N
        }
    }