对于当前位置下的所有目录,我试图找到一种方法来产生合格的子路径名称,而前导“ ./”除外。
$dirs = Get-ChildItem -Directory -Recurse .
我会使用Resolve-Path -Relative
,但下一个需要使用的结果是不带./
的字符串。
无需诉诸于字符串操作技巧(我可以-分割每条路径,将第一个元素切开,然后再次将其结合在一起,但是join!)
注意:我正在使用此跨平台,因此任何解决方案都需要在核心环境下工作。
----编辑:示例----
Linux:
> cd /proc/sys
> Function GetIPV6 { gci -r -dir |? name -eq 'ipv6' }
> GetIPV6 | Resolve-Path -Relative
./net/ipv6 # << has a leading './' I want to avoid
> (GetIPV6).FullName
/proc/sys/net/ipv6 # << full path, not sub path
我正在寻找的是:
> cd /proc/sys
> GetIPV6 | ???
net/ipv6
Windows:
> cd /windows/system32
> Function GetETC { gci -r -dir |? name -eq "etc" }
> GetETC | resolve-path -relative
.\Drivers\etc #< has leading .\
> (GetETC).FullName
C:\Windows\System32\Drivers\etc #< full path
我想要的是
> GetETC | ???
Drivers\etc or Drivers/etc
答案 0 :(得分:0)
如果我将限定路径理解为完全限定路径,则FullName
对象上有一个System.IO.DirectoryInfo
属性,该属性是从{返回的{1}}:
Get-ChildItem -Directory
这将为您提供工作目录下目录的所有标准路径的字符串数组。
要解决您的修改,此示例将在* nix或Windows上运行:
Get-ChildItem -Directory -Recurse |
Select-Object -ExpandProperty FullName
最后一种更强大的方式:
(Get-ChildItem -Directory -Recurse).
FullName.
Replace("$pwd", '') -replace '^[\\/]'