我的情况是我在文件夹结构中有3000个供应商。然后每个供应商每年都有文件夹(2001,...... 2014)和其他文件夹。有没有办法列出最近一年(无论哪一年)的所有文件。
基本上,我需要将所有最新的协议文件从文件共享上传到SharePoint。
答案 0 :(得分:0)
One Liner
Get-ChildItem | %{ $_.FullName | Get-ChildItem [1-9][0-9][0-9][0-9] | sort -Descending | Select-Object -First 1 | Get-ChildItem }
您从根文件夹开始,对于每个文件夹,您获得名称看起来像一年的所有文件夹,对它们进行排序,获取第一个文件夹,并获取所有文件夹。
当然,这有很多问题。例如必须有至少一年的文件夹,没有'年'文件等。我会留下你解决这类问题。
答案 1 :(得分:0)
首先,我会递归遍历所有目录,匹配与当前年份相同的目录:
$thisYearDirs = get-childitem -Directory -Recurse | where {$_.Name -eq (get-date).year}
然后你会得到每个文件中的文件:
$thisYearDirs | get-childitem
您也可以在一行中完成所有操作:
get-childitem -Directory -Recurse | where {$_.Name -eq (get-date).year} | get-childitem
请注意,-directory
开关需要powershell v3,您可以通过修改where子句条件来过滤掉早期版本中的目录:
get-childitem -Recurse | where {$_.PSIsCOntainer -and $_.Name -eq (get-date).year} | get-childitem