我有一个高级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来实现性能(更高语言的循环,太慢了)。
答案 0 :(得分:0)
我认为最简单的方法是:
FullName
(他们的路径)属性这应该做:
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
}
}