Kiel parto renomi parton de la dosiernomo en Windows PowerShell uzante Regex?

En ĉi tiu ekzemplo, ni havas 6 dosierojn sube kun la dato kaj dosiernomon sube:

Maniero LastWriteTime Longeco Nomo
----                -------------         ------ ----
-a ----       10/06/2018     12:40              0 1 = 9.8.16 Banko Komunikaĵo 298.67.pdf
-a ----       10/06/2018     12:40              0 2 = 9.9.16 Banko Komunikaĵo 134.74.pdf
-a ----       10/06/2018     12:41              0 3 = 9.10.16 Banko Komunikaĵo 123.43.pdf
-a ----       10/06/2018     12:41              0 4 = 9.11.16 Banko Komunikaĵo 134.54.pdf
-a ----       10/06/2018     12:41              0 5 = 9.12.16 Banko Komunikaĵo 157.98.pdf
-a ----       10/06/2018     12:41              0 6 = 9.1.17 Banko Komunikaĵo 123.45.pdf

tie, la dosiernomo enhavas seria # je la komenco, sekvata de =, sekvata de 'Banko Komunikaĵo’ sekvita de la fino de deklaro ekvilibro.

Tiuj dosieroj estas fakte kreditkarto deklaroj kaj la vorto 'Banko’ bezonas esti anstataŭita de la vortoj 'kreditkarto'. La tuta cetera dosiernomo devus resti la sama.

Por atingi tiun, we will be using Fenestroj PowerShell with Regex.

Printi ĉiujn banko deklaroj, ni uzas la ls komando, tiam pipon la produktadon

ls | ren -newname {$_.name -replace('(.+)banko(.+)','$ 1Credit Card $ 2')}

La renomi komando estas uzata post la pipon por renomi la dosierojn. $_ estas la objekto kiu tenas la produktadon antaŭ la pipo, kaj ni uzas la nomon propraĵo de la $_ objekto. -replace is used on strings in PowerShell, kiu anstataŭas kordo kun nova kordo. -replace estas funkcio kiu prenas 2 parametroj. La 1-a parametro estas la malnova ĉeno kiun ni volas anstataŭigi kaj la 2-a parametro estas la nova ĉeno.

Kapti grupoj en Regex permesas nin teni partojn de la kordo. en Regex, ion meti en parentezo estas kaptita por uzi poste. Eg. (.+)Bank(.+) kaptas ion antaŭ kaj post la signoj 'Banko'. Ni povas uzi tiujn kaptis partoj, uzante $ kaj kelkaj. La 1-a parentezo kaptas en $1 kaj la 2-a parentezo kaptas en $2 ktp…

En la 1-a parametro, ni specifi la malnova ĉeno kiun ni volas anstataŭigi, kaj samtempe ni kapti la partojn de la kordo ke ni volas konservi (preno). En la 2-a parametron, la nova ĉeno uzas la kaptita partojn kiuj ni volas konservi, kaj ankaŭ la nova kordo mem ekz. '$1Credit Card$2'.

rezulto:

Maniero LastWrite Tempo Longeco Nomo
----       ---------      ----            ------   ----
-a ----     10/06/2018     12:40              0 1 = 9.8.16 Kreditkarto Komunikaĵo 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 Kreditkarto Komunikaĵo 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 Kreditkarto Komunikaĵo 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Kreditkarto Komunikaĵo 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Kreditkarto Komunikaĵo 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Kreditkarto Komunikaĵo 123.45.pdf

Lasi Respondon