сортировать подстроки имен файлов, давая уникальные значения - PullRequest
0 голосов
/ 02 июля 2018

FWIW - мне было весело «разрабатывать» эту простую процедуру, которая перечислит уникальных исполнителей среди нескольких сотен файлов в одном каталоге файлов MP3

На основе паттерна "artist - title.mp3"

Get-ChildItem | ForEach-Object {($_.basename -split ("-"))[0]} | Select-Object -unique

То, что я хотел бы сделать сейчас, это иметь счетчик рядом с каждым уникальным именем (т. Е. Герцог Эллингтон - 4 Дорис Дэй - 6

Не уверен, как это сделать, но, вероятно, это очень просто. Пытался использовать групповое утверждение, но не повезло

Билл Кларк, Виндхем, VT

1 Ответ

0 голосов
/ 02 июля 2018

Предполагая, что все ваши файлы следуют этому шаблону:

Get-ChildItem -File |
    Group-Object -Property {$_.BaseName.Split('-')[0]}

Это автоматически сгруппирует все строки, возвращенные из предыдущего элемента в конвейере.


Тогда вы можете делать дополнительные забавные вещи с этим:

Get-ChildItem -File |
    Group-Object -Property {$_.BaseName.Split('-')[0]} |
    ForEach-Object {
        $dir = "$([IO.Path]::GetDirectoryName($_.Group[0].FullName))\$($_.Name)\"
        if (-not (Test-Path -Path $dir -PathType Container)) {
            New-Item -Path $dir -ItemType Directory
        }

        foreach ($file in $_.Group) {
            $file | Copy-Item -Destination $dir -Force
        }
}

А теперь все ваши песни отсортированы по исполнителям по папкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...