Подпуть без ведущих "." - PullRequest
       9

Подпуть без ведущих "."

0 голосов
/ 16 октября 2018

Я пытаюсь найти способ получения квалифицированных имен подпутей без начального "./" для всех каталогов в моем текущем местоположении:

$dirs = Get-ChildItem -Directory -Recurse .

Я бы использовал Resolve-Path -Relative но следующее место, где мне нужен результат - строка без ./.

Не прибегая к махинациям со строковыми манипуляциями (я мог бы разделить каждый путь, отрезать первый элемент и затем присоединиться к нему)снова вместе, но юк!)

Примечание: я использую эту кроссплатформенность, поэтому любое решение должно работать под ядром.

---- Редактировать: Примеры ----

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

1 Ответ

0 голосов
/ 17 октября 2018

Если я понимаю полные пути как полные полные пути , существует свойство FullName объекта System.IO.DirectoryInfo, которое возвращается из Get-ChildItem -Directory:

Get-ChildItem -Directory -Recurse |
    Select-Object -ExpandProperty FullName

Это дает вам строковый массив всех полных путей для каталогов в вашем рабочем каталоге.


Чтобы выполнить редактирование, этот пример будет работать на * nix или Windows:

(Get-ChildItem -Directory -Recurse).
    FullName.
    Replace("$pwd", '') -replace '^[\\/]'

Наконец, более мощный способ:

Get-ChildItem -Directory -Recurse |
    Select-Object -ExpandProperty FullName |
    % Replace "$pwd/", ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...