Regex для исключения чего-либо и массового переименования файлов - PullRequest
2 голосов
/ 12 октября 2019

Я пытаюсь переименовать все файлы каталога, удалить части имен файлов, исключая некоторые части.

, например:

Before --> After 

file1: Something S01E01 ЗдравствуйтеЕсть Guys.srt -> S01E01.srt

file2: Something_else S03E22 Good.bye.srt -> S03E22.srt

и т. Д.

Я пробовалследующий код в powershell:

Get-ChildItem | rename-item -NewName {$_.name -replace "Something",""}
Get-ChildItem | rename-item -NewName {$_.name -replace "Good.bye",""}
Get-ChildItem | rename-item -NewName {$_.name -replace "Something_else",""}
Get-ChildItem | rename-item -NewName {$_.name -replace " Hello(.*?)\.srt",".srt"}
Get-ChildItem | rename-item -NewName {$_.name -replace " ",""}

Любое представление о правильном коде регулярного выражения вместо жесткого кодирования, чтобы исключить "SxxExx.srt" часть имени файла и удалить другие части имени?

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Вы хотите использовать шаблон, подобный этому:

(S\d{2}E\d{2})

, чтобы сопоставить и захватить S01E01 часть.

Get-ChildItem | Rename-Item -NewName {($_.BaseName -replace '^.*(S\d{2}E\d{2}).*$','$1') + $_.Extension}
1 голос
/ 12 октября 2019

Может быть,

\b[A-Z][0-9]+[A-Z][0-9]+\b\s*|\.srt

или,

\b[A-Z][0-9]+[A-Z][0-9]+\b\s*|\.srt[^\r\n]*

или какое-либо подобное выражение, заменяемое пустой строкой, может быть несколько близко.

Демо 1

Демо 2

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