如何将树的结果传递或管道到 Powershell?

问题描述

如何填充通过 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...