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

Я перебираю несколько файлов, а $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 в середине имени файла …

  • Перечислять дубликаты имен файлов в листинге?
  • Режим Vi или режим emacs во всей системе
  • Как запустить команду на TTY из сеанса SSH?
  • Сценарий для просмотра папки для новых файлов?
  • echo $ PATH не отражает «экспорт PATH», который я сделал в сценарии оболочки
  • В чем смысл «$ {name ## * /}» в Shell
  • Удалите много файлов из папки
  • Что такое ярлык bash для перехода к предыдущему каталогу?
  • 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 , чтобы сохранить метаданные файла (особенно время модификации).

    Interesting Posts

    Как установить Row & Column в сценарии оболочки

    Как выполнить команду watch на выражение с помощью труб?

    Есть ли разница между добавлением пары имя-значение в команду и использованием env в bash?

    Установка Debian, но не загружается

    Принудительно отобразить файл в виде текста

    Как ограничить доступ ftp к нескольким местам для одного пользователя

    Назначение номера виртуального ядра конкретному реальному ядру

    обнаруживать процесс питания процессора без: top, htop, ps?

    Можем ли мы получить информацию о компиляторе из двоичного файла эльфа?

    Требования к сети моста KVM

    Только маршрутизация определенного трафика через VPN

    PID-файл /var/run/named/named.pid не читается (еще?) После запуска

    QEMU может эмулировать SD-карту из Linux, но не из OSX

    Начиная с вчерашнего обновления Debian, X11, похоже, не загружает мой файл ~ / .Xmodmap, каков был бы самый правильный способ его загрузки?

    как сделать изменения брандмауэра постоянными через firewall-cmd?

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