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

Я хочу переименовать следующие файлы: 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 
  • Создание каталога с пробелом в имени
  • Что означает выражение $ (<"dir / file") в bash?
  • Shell Script: отправка ввода в фоновый процесс
  • Неверный вариант конфигурации: ControlPersist, а scp с управляющим мастером?
  • Написание сценария оболочки Unix для вызова функции C и перенаправления данных в файл .txt
  • Шебанг, начинающийся с `//`?
  • Может ли любая оболочка использовать интерактивный поиск на уровне аргументов?
  • Найдите файл в папке1 и выполните сценарий, если этот файл не находится в папке2
  • Почему читать -r есть текст?
  • Скрипт для отправки PDF-файлов
  • Сценарий Bash для открытия экранов и компиляции того же файла
  • Linux и Unix - лучшая ОС в мире.