小编Ger*_*nas的帖子

将文件名中的一个字符与另一个交换

我有一个名为a_b-c-d-e-f.txt. 我想采用当前名称并交换破折号和下划线,使其变为a-b_c_d_e_f.txt.

我的直觉告诉我尝试renametr,但我遇到了这个问题。这是我目前的尝试

#!/bin/bash
for i in *.txt; do
  [ -f "$i" ] || break
  newFile=$(echo "$i" | tr '-' '_')
  cp "$i" $newFile
done
Run Code Online (Sandbox Code Playgroud)

有了这个,我结束了

a_b_c_d_e_f.txt
Run Code Online (Sandbox Code Playgroud)

这是 ab 之间不应该改变的部分。此外,破折号不一定总是在文件名中的那个位置。例如,它可能看起来像

a-b-c_d-e-f.txt
Run Code Online (Sandbox Code Playgroud)

或者像这样的任何组合。我希望他们翻转不管他们在名字中的位置。

command-line bash batch-rename text-processing

4
推荐指数
2
解决办法
636
查看次数