Переименование нескольких файлов с помощью сценария оболочки

Я хочу переименовать следующие файлы: 0, 0.001, 0.002, 0.003 …, 0.035

в 0, 1, 2, 3 …, 35

Как мне это сделать?

2 Solutions collect form web for “Переименование нескольких файлов с помощью сценария оболочки”

bash (при условии, что опция оболочки extglob включена – см. руководство по шаблону )

 for i in 0.* ; do mv "$i" "${i##0.*(0)}" ; done 
  • ${i## удалить наибольшее совпадение с начала переменной i
  • 0. соответствует последовательности символов 0.
  • *(0) означает ноль или более вхождений 0

или это решение, предложенное @Costas, для которого не требуется опция extglob

 for i in 0.* ; do mv "$i" "${i#${i%%[!0.]*}}" ; done 
  • ${i%% удаляет наибольшее совпадение с переменной конца i
  • * любой символ, ноль или более раз
  • [!0.] Кроме 0.
  • поэтому ${i%%[!0.]*} эффективно удаляет из первого не 0 или . знак до конец. Для ex: 35 удаляется для 0.035 , 1 для 0.001 , str0.00456a для 0str0.00456a и целая строка для str0.00456a
  • остальные символы (например: 0.0 для 0.035 и 0.00 для 0.001 передаются в ${i# который затем удаляет эти символы с начала переменной, в результате получается 35 для 0.035 и 1 для 0.001

Дальнейшее чтение: расширение параметра

С rename ( prename ):

 rename -n 's/^[^.]+\.0*([1-9]+)$/$1/' 0* 

-n будет делать сухой ход, если вы удовлетворены изменениями, которые необходимо внести, выполните:

 rename 's/^[^.]+\.0*([1-9]+)$/$1/' 0* 

Пример:

 % rename -n 's/^[^.]+\.0*([1-9]+)$/$1/' 0* 0.001 renamed as 1 0.002 renamed as 2 0.003 renamed as 3 0.035 renamed as 35 
  • Чтение файла при запуске .bashrc, основанный на дате
  • Выполнить две команды по одному аргументу
  • Как изменить рабочий каталог вызова оболочки с помощью скрипта?
  • Найти команды / функцию, имя которой соответствует значению
  • Вложенный цикл while работает не так, как ожидалось
  • Почему мой сценарий оболочки задыхается от пробелов или других специальных символов?
  • `$ XAUTHORITY` появляется из 'нигде' на su + tmux
  • Почему `` `встроенная оболочка и` [[`ключевое слово оболочки?
  • Если утверждения в Array
  • Как копировать и переименовывать файлы, найденные в функции «найти» Linux?
  • почему ! символ, используемый в сценариях оболочки
  • Linux и Unix - лучшая ОС в мире.