Как добавить одну и ту же строку во многие имена файлов на Mac одновременно?

Мне просто нужно добавить строку «eng» ко многим именам файлов в одном каталоге, не меняя его расширение в MAC TERMINAL. Я долго искал, нашел команду mv для переименования файлов сразу. Но я не знаю, как реализовать в моем сценарии. Может ли кто-нибудь направить меня?

Спасибо


person VivekParamasivam    schedule 19.06.2014    source источник
comment
Итак, вы хотите добавить eng к файлу contents или имя файла?   -  person trojanfoe    schedule 19.06.2014
comment
Извините, что добавляю это к именам файлов   -  person VivekParamasivam    schedule 19.06.2014


Ответы (2)


Если у вас есть каталог, содержащий следующие файлы:

a.ext
b
c.long.sh

И вы хотите переименовать их в:

aeng.ext
beng
c.longeng.sh

Следующий «oneliner» в терминале Mac (bash) должен сделать это:

for i in *; do name="${i%.*}"; mv "$i" "${name}eng${i#$name}"; done

Объяснять:

  • for i in *; do - перебирает все ваши имена файлов
  • name="${i%.*}" - извлекает часть имени перед расширением (удаляет все после последней точки)
  • mv - обрабатывает переименование
  • ${name}eng - добавляет eng к названию
  • ${i#$name} — получает расширение (это удаляет часть имени из исходного имени файла)

Примечание. Если вы хотите предварительно просмотреть, что он будет делать, но не выполнять переименование, вставьте «echo» перед «mv». Это выведет операторы на экран вместо выполнения переименования.

person Oli    schedule 19.06.2014

Это должно сделать это:

IFS=$(echo -en "\n\b")
cd /path/to/directory
for f in *
do
    mv "$f" "${f}eng"
done

Хотя он не переименовывает все файлы «сразу», что невозможно.

person trojanfoe    schedule 19.06.2014