Fat*_*ind 5 command-line rename batch-rename
我使用命令rename
同时重命名多个文件如下
但是我如何在同一个命令中进行多个更改
即改变1 to A
和改变2 to B
* 更新 1 *
我使用以下案例进行测试,但出现错误
touch {1..100}
rename 's/0/A/; s/1/B/; s/2/C/; s/3/D/; s/4/E/; s/5/F/; s/6/G/; s/7/H/;s/8/I/; s/9/J/' *
Run Code Online (Sandbox Code Playgroud)
结果是
ls
B BE C CF D3 DG EA EH FB FI GC GJ HD I IE J9 JF
B1 BF C2 CG DA DH EB EI FC FJ GD H HE I8 IF JA JG
BA BG CA CH DB DI EC EJ FD G GE H7 HF IA IG JB JH
BA0 BH CB CI DC DJ ED F FE G6 GF HA HG IB IH JC JI
BC BI CD CJ DE E EF F5 FG GA GH HB HI IC IJ JD
BD BJ CE D DF E4 EG FA FH GB GI HC HJ ID J JE
Run Code Online (Sandbox Code Playgroud)
* 更新 2 *
要解决这个问题,我必须使用 /g 。即 11 应该是 BB 但要这样做 /g 是必需的,否则只会更改第一个数字
所以正确的命令是
rename 's/0/A/g; s/1/B/g; s/2/C/g; s/3/D/g; s/4/E/g; s/5/F/g; s/6/G/g; s/7/H/g; s/8/I/g ; s/9/J/g ' *
Run Code Online (Sandbox Code Playgroud)
这也可以通过使用一个rename
命令来实现:
rename 'y/A-B/1-2/' *
Run Code Online (Sandbox Code Playgroud)
示例:-n
开关表示“无操作:打印要重命名的文件名,但不重命名”。
$ rename -n 'y/A-B/1-2/' *
rename(A, 1)
rename(B, 2)
Run Code Online (Sandbox Code Playgroud)
音译?
y/SEARCHLIST/REPLACEMENTLIST/cdsr
Transliterates all occurrences of the characters found in the search list
with the corresponding character in the replacement list. It returns the
number of characters replaced or deleted.
Run Code Online (Sandbox Code Playgroud)
您可以插入多个转换模式,并用 分隔;
:
rename 's/1/A/; s/2/B/' *
Run Code Online (Sandbox Code Playgroud)
如果要更改所有出现的1
和2
而不仅仅是第一个,请使用g
(global) 修饰符:
rename 's/1/A/g; s/2/B/g' *
Run Code Online (Sandbox Code Playgroud)
例子:
$ ls -1
1234
4321
foo12bar
spam23egg
test
$ rename -n 's/1/A/; s/2/B/' *
1234 renamed as AB34
4321 renamed as 43BA
foo12bar renamed as fooABbar
spam23egg renamed as spamB3egg
$ rename 's/1/A/; s/2/B/' *
$ ls -1
43BA
AB34
fooABbar
spamB3egg
test
Run Code Online (Sandbox Code Playgroud)