回答編集履歴

3

追記

2020/08/20 22:35

投稿

yureighost
yureighost

スコア2183

test CHANGED
@@ -30,8 +30,28 @@
30
30
 
31
31
  再帰的に配下のサブディレクトリ内のファイルのみをリネームします。
32
32
 
33
+
34
+
35
+ **再追記**
36
+
37
+ ikadzuchiさんご指摘ありがとうございます。
38
+
39
+ 正規表現に問題がありますね。
40
+
41
+ とりあえず例で挙げられてるのだけ処理できるように書いたので。
42
+
43
+ 具体的には一番右のピリオドより右のアンダースコアより右の文字を切り捨てる。
44
+
45
+ という正規表現に修正しました。
46
+
47
+ これならば
48
+
49
+ test.test_bk_test.txt_bk2_bk_bn → test.test_bk_test.txt
50
+
51
+ こういう置換ができます。
52
+
33
53
  ```powershell
34
54
 
35
- Get-ChildItem -Recurse * | ? { ! $_.PSIsContainer } | rename-item -NewName { $_.name -replace '([^_]+)(?:_bk)+','$1' }
55
+ Get-ChildItem renamefile -Recurse * | ? { ! $_.PSIsContainer } | rename-item -NewName { $_.name -replace '(.+.[^_]+)_.+','$1' }
36
56
 
37
57
  ```

2

誤字の修正

2020/08/20 22:35

投稿

yureighost
yureighost

スコア2183

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  再帰的に配下のサブディレクトリ内のファイルのみをリネームします。
32
32
 
33
- ```python
33
+ ```powershell
34
34
 
35
35
  Get-ChildItem -Recurse * | ? { ! $_.PSIsContainer } | rename-item -NewName { $_.name -replace '([^_]+)(?:_bk)+','$1' }
36
36
 

1

追記

2020/08/20 10:37

投稿

yureighost
yureighost

スコア2183

test CHANGED
@@ -11,3 +11,27 @@
11
11
  ```
12
12
 
13
13
  これを実行していただければリネームできるはずです。
14
+
15
+
16
+
17
+ **追記**
18
+
19
+ そのエラーはリネーム前と後が同じ名前を指定すると出るエラーです。
20
+
21
+ 置換処理を入れても名前が変わらないファイルがあったってことですね。
22
+
23
+
24
+
25
+ そしてディレクトリを再帰的に処理するコマンドはこれです。
26
+
27
+ -Recurseの前にディレクトリ名を入れていただければそこから、
28
+
29
+ 無指定ならpowershellの現在のディレクトリから、
30
+
31
+ 再帰的に配下のサブディレクトリ内のファイルのみをリネームします。
32
+
33
+ ```python
34
+
35
+ Get-ChildItem -Recurse * | ? { ! $_.PSIsContainer } | rename-item -NewName { $_.name -replace '([^_]+)(?:_bk)+','$1' }
36
+
37
+ ```