如何在包含多个 OLD 文件的目录树中获取良好的文件列表?
我只想查看名为 OLD
的目录中具有一定期限的文件。
最佳答案
据我了解这个问题,Raoul Supercopter's solution并没有完全回答这个问题。上述解决方案不是从名为“OLD”的目录中查找所有文件,而是查找名称中包含“OLD”的所有文件。
相反,我认为您要求的内容是查找名为 OLD 的目录中早于特定日期的所有文件。
因此,要查找目录,我们需要如下内容:
dir -r | ? {$_.name -match "\bold\b" -and $_.PSIsContainer}
但是您随后需要可以递归地遍历每个目录并查找文件(以及可能包含在其他名为“OLD”的目录中的任何名为“OLD”的目录)的东西。
最简单的方法是编写一个函数,然后递归调用它,但这里有一种在一行上执行此操作的方法,该方法采用不同的策略(请注意行继续字符,以便这适合:
dir -r | ? {!$_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date 5/1/2006)} `
| ? {(% {$_.directoryname} | split-path -leaf) -eq "OLD"}
那么,这里发生了什么?
第一部分只是基本的递归目录列表。下一部分将检查以确保您正在查看文件 (!$_.PSIsContainer
) 并且它符合您的年龄要求。 Get-Date 两边的括号部分可让您获取运行命令的结果。然后,我们获取每个文件的目录名称,并使用 split-path cmdlet 获取最近目录的名称。如果该文件是“旧”,那么我们有一个符合您要求的文件。
关于powershell - 使用 PowerShell 仅查找名为 OLD 且具有一定期限的子目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2680881/