Подтвердить что ты не робот

Переименовать файлы с помощью регулярных выражений с помощью bash

Возможный дубликат:
переименовать несколько файлов сразу в unix

Я хотел бы переименовать все файлы из папки с помощью регулярного выражения (добавить имя в конец имени) и перейти в другую папку.

Это мое мнение, это должно выглядеть так:

mv -v ./images/*.png ./test/*test.png

но это не сработает.

Может ли кто-нибудь предложить мне решение?

4b9b3361

Ответ 1

Попробуйте следующее:

for x in *.png;do mv $x test/${x%.png}test.png;done

Ответ 2

Если вы работаете в Linux, проверьте специальную команду rename, которая сделает именно это - переименование с использованием регулярных выражений.

rename 's/^images\/(.+)/test\/$1.png/s' images/*.png

В противном случае напишите цикл bash по именам файлов как подиум, предложенный.

Ответ 3

$ for old in ./images*.png; do
    new=$(echo $old | sed -e 's/\.png$/test.png/')
    mv -v "$old" "$new"
  done

Ответ 4

Еще одним решением будет инструмент, называемый "mmv": mmv "./images/*.png" "./test/#1test.png"