Подстановка параметров оболочки для переименования файлов

Подстановка параметров оболочки для переименования файлов

Мне нужно переименовать имена файлов, которые начинаются с «foo» в «boo»

Это скрипт, который я использовал.

#!/bin/sh


for f in *.jpg;
do

mv -- "{$f}" "${f/foo/boo}";


done

но при запуске я получаю ошибку неверной подстановки. в чем проблема в моем коде?

решение1

Вы используете /bin/shкак оболочку, которая, кажется, принимает только простые функции sh. Расширенные функции, такие как ${//}расширения, доступны только в оболочках, таких как bash.

Просто измените настройки, и все должно заработать.

Также посмотрите man rename(иногда его называют prenamewhere renameis the one from util-linux). Это должно сделать именно то, что вам нужно:

rename 's/^foo/boo/' foo*.jpg

Если вы использовали /bin/shнамеренно, вы можете использовать:

mv -- "$f" "boo${f#foo}"

Подробности смотрите на man sh.

Связанный контент