複数のファイルの中間名を一度に変更するには?

複数のファイルの中間名を一度に変更するには?

たとえば、190個のファイルがあり、L001途中で追加したいと思います。より良い場合は、cmdコマンドまたはPowerShellを使用してこれをどのように実行できますか?また、一部の数字は2桁、一部の数字は1桁です。

PP-SD01_S1_R1.fastq.gz
PP-SD05_S1_R2.fastq.gz

PP-SD09_S20_R1.fastq.gz
PP-SD025_S20_R2.fastq.gz

PP-SD039_S22_R1.fastq.gz
PP-SD039_S22_R2.fastq.gz
...

L001との間にそれぞれ追加したいと思います。例えばS....RPP-SD039_S22_L001_R1.fastq.gz

答え1

正規表現を使用して部分を一致させ、S...それらの間にR...挿入します。L001

PS /tmp> Get-ChildItem -File -Filter *.fastq.gz | Rename-Item -NewName { $_.Name -replace '(S\d+)_(R\d+)', '$1_L001_$2' } -WhatIf
What if: Performing the operation "Rename File" on target "Item: /tmp/PP-SD01_S1_R1.fastq.gz Destination: /tmp/PP-SD01_S1_L001_R1.fastq.gz".
What if: Performing the operation "Rename File" on target "Item: /tmp/PP-SD025_S20_R2.fastq.gz Destination: /tmp/PP-SD025_S20_L001_R2.fastq.gz".
What if: Performing the operation "Rename File" on target "Item: /tmp/PP-SD039_S22_R1.fastq.gz Destination: /tmp/PP-SD039_S22_L001_R1.fastq.gz".
What if: Performing the operation "Rename File" on target "Item: /tmp/PP-SD039_S22_R2.fastq.gz Destination: /tmp/PP-SD039_S22_L001_R2.fastq.gz".
What if: Performing the operation "Rename File" on target "Item: /tmp/PP-SD05_S1_R2.fastq.gz Destination: /tmp/PP-SD05_S1_L001_R2.fastq.gz".
What if: Performing the operation "Rename File" on target "Item: /tmp/PP-SD09_S20_R1.fastq.gz Destination: /tmp/PP-SD09_S20_L001_R1.fastq.gz".
PS /tmp>

より短いバージョン:

dir *.fastq.gz | ren -Ne { $_.Name -replace '(S\d+)_(R\d+)', '$1_L001_$2' } -wi

名前が正しいことを確認したら、削除-WhatIf/-wi実際の名前変更を実行します。

関連情報