Как скопировать несколько файлов, но сохранить их расширения одинаково?

Я перебираю несколько файлов, а $file представляет текущий файл.

Как я могу делать копии или переименовывать и поддерживать расширение для этого текущего файла?

например, если $file = x.jpg

Как сделать копию $file с именем файла x_orig.jpg

Пока у меня есть:

 for file in /tmp/p/DSC*.JPG; do cp $file $file+'_orig'.JPG done 

но копирует файл

 DSCF1748.JPG 

в

 DSCF1748.JPG+_orig.JPG 

тогда как мне нужна копия с именем

 DSCF1748_orig.JPG 

Аналогично, используя cp $file "$file"_orig.JPG

приводит к таким файлам, как DSCF1748.JPG_orig.JPG

Я хочу получить _orig в середине имени файла …

2 Solutions collect form web for “Как скопировать несколько файлов, но сохранить их расширения одинаково?”

Вы можете использовать функции замены строки bash для этого:

 for file in /tmp/p/DSC*.JPG; do cp "$file" "${file%.JPG}"_orig.JPG done 

Общий формат – ${string%substring} который удаляет substring с конца string . Например:

 $ f=foobar.JPG; echo "${f%.JPG}" foobar 
 zcp -o -p '/tmp/p/DSC*.JPG' '$f:r_orig.JPG' 

или эквивалентно

 zcp -o -p '/tmp/p/(DSC*).JPG' '/tmp/p/${1}_orig.JPG' 

Это требует, чтобы вы запускали zsh (другие оболочки не имеют ничего подобного) и поместите это в ваш ~/.zshrc :

 autoload -U zmv alias zcp='zmv -C' alias zln='zmv -L' 

-o -p сообщает zcp передать параметр -p команде cp , чтобы сохранить метаданные файла (особенно время модификации).

  • Регулярное изменение / оператор (foo | bar) в GNU или BSD Sed
  • сохранение вывода командной строки в текстовом файле?
  • Как я могу использовать grep для разбитых HTML-тегов?
  • Как добавить комментарии к многострочным операторам в сценарии Bash?
  • Различные двоичные файлы сна на Mac (Darwin) и в Linux. Как правильно обрабатывать различия?
  • Вопрос о shell и .profile, .bash_profile, .bashrc
  • exec с переменной filedescriptor
  • Не удается SSH после переключения на маршрутизатор Netgear
  • stderr над ssh -t
  • Как выполнить инструкцию IF из результата выполненной команды
  • Запуск в корневой оболочке из скрипта пользователя bash
  • Interesting Posts

    Переключение на другую оболочку без копирования переменных среды

    Установка каталога NFS в том хоста, который используется совместно с Docker

    Почему моя команда mac terminal НЕ работает в сценарии оболочки?

    Как проверить, принадлежат ли две директории или файлы одной и той же файловой системе

    Как я могу расширить все переменные в командной строке в Zsh?

    Новые сеансы tmux не содержат файл bashrc

    Почему MAIL отключается в графических средах?

    Какой драйвер для Intel HD Graphics следует установить?

    Почему crontab работает с подстановочными знаками (*), но не с цифрами?

    Интеллектуальное переключение между несколькими процессами BASH

    Как я могу исправить проблему, когда приложение «Установка и удаление программ» никогда не запрашивает мой пароль?

    Удаление теней из окон Metacity

    Есть ли общий способ автоматического обновления с помощью cron?

    Как изменить метаданные на установленном об / мин

    iptables для блокировки всех веб-сайтов

    Linux и Unix - лучшая ОС в мире.