С помощью инструмента rename
на основе Perl:
$ rename -n 's/0+/_/' *.out
'filename.R10001.out' would be renamed to 'filename.R1_1.out'
'filename.R10002.out' would be renamed to 'filename.R1_2.out'
'filename.R10010.out' would be renamed to 'filename.R1_10.out'
'filename.R10011.out' would be renamed to 'filename.R1_11.out'
Если выходные данные выглядят правильно, вы можете удалить параметр -n
и фактически переименовать.
В качестве альтернативы, с расширенными глобами (все еще предполагая, что замена первого вхождения нулей - это то, что мы хотим заменить):
for f in ./*.out; do echo mv "$f" "${f/+(0)/_}"; done
Для этого необходимо установить shopt -s extglob
. Бросьте echo
, когда команды выглядят правильно.