Я использую команду 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/' *
результат
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
* обновляют 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 ' *
Вы можете вставить несколько конверсионных образцов, отделенных ;
:
rename 's/1/A/; s/2/B/' *
, Если Вы хотите изменить все случаи 1
и 2
, а не только первые, используйте g
(глобальный) модификатор:
rename 's/1/A/g; s/2/B/g' *
Пример:
$ 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
Это также возможно с помощью одной команды rename
:
rename 'y/A-B/1-2/' *
Пример: переключатель -n
означает «Нет действия: вывести имена файлов, которые нужно переименовать, но не t переименовать. "
$ rename -n 'y/A-B/1-2/' *
rename(A, 1)
rename(B, 2)
<час> Транслитерация?
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.