我有诸如ABC_asd_f.txt
, DEF_qwe_r.txt
, ...之类的文件
如何将第一个下划线之前的大写字母与之后的小写字母交换?于是就ABC_asd_f.txt
变成了asd_f_ABC.txt
,DEF_qwe_r.txt
变成了qwe_r_DEF.txt
,...
答案1
使用 perl 重命名。首先使用-n
旗帜进行预演。
rename -n 's/^(...)_(..._.)/$2_$1/' *
然后,如果你高兴的话,就真正运行它。
rename 's/^(...)_(..._.)/$2_$1/' *
解释
这使用捕获组。
rename 's/foo/bar/' *
: 替换foo
为bar
所有文件*
。^(...)_(..._.)
:从行首开始^
,捕获前三个字符(...)
,跳过_
,然后捕获接下来的五个字符,其中第四个是下划线(..._.)
。$2_$1
:用相反的捕获组替换上面的字符串(即第二个,下划线,然后是第一个)。
重命名版本
rename
Linux 领域有两个s。您可以使用以下命令判断它是否是 perl 重命名
$ rename --version
perl-rename 1.9
另一种会给出不同的结果。
$ rename --version
rename from util-linux 2.28