问题描述
如何填充通过 tree
找到的文件数组?
posh>
posh> tree ./ | Get-Item
Directory: /home/nicholas/powershell
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2/21/2021 5:42 PM regex
Get-Item: Cannot find path '/home/nicholas/powershell/regex/├── a.log' because it does not exist.
..
Get-Item: Cannot bind argument to parameter 'Path' because it is an empty string.
Get-Item: Cannot find path '/home/nicholas/powershell/regex/0 directories,16 files' because it does not exist.
posh>
这个例子没有子目录,但对于更复杂的目录,有子目录,希望捕获每个文件的完整路径和文件名。
具体来说,然后 search 文件 - 但问题具有一定的普遍性。
另见:
Use PowerShell to generate a list of files and directories
https://superuser.com/q/1270040/977796
解决方法
tree
是在 Windows 和大多数 Unix 风格的操作系统上找到的 CLI 程序,用于绘制文件结构的可视化表示。它不会生成目录数组。
在 powershell 中,如果您想递归地获取目录结构的项目并将它们保存到变量(除非只返回单个项目,否则它将是一个数组)使用以下内容:
$tree = Get-ChildItem -Recurse
这会将结果存储在变量 $tree
中。
如果您不想从当前位置开始,则可以使用 -path
参数。例如
$tree = Get-ChildItem -Path "/home/dave" -Recurse