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

Причина -X не работает то, потому что это - a screen команда, которую Вы выполняете - чтобы заставить ее работать mcStart.sh и tsStart.sh, необходимо использовать:

screen -dmS test -t win1 mcStart.sh
screen -rS test -X screen -t win2 tsStart.sh
3
30.09.2013, 02:46
2 ответа

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

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
3
27.01.2020, 21:16
  • 1
    Необходимо использовать "${file%.JPG}" вместо этого. f не определяется, file . Кроме того (поскольку Вы упомянули), /%.abc/ синтаксис является функцией удара. Отбрасывание наклонных черт работает на этот случай и делает его POSIX совместимый, который имеет смысл, так как сценарии преобразования часто используют оболочку POSIX. –  Marco 29.09.2013, 20:47
  • 2
    @Marco благодарит, ответ отредактирован. f была просто опечатка, перенесенная от примера, который я пробовал. Спасибо за то, что сообщили мне о стороне POSIX, хотя, я думал, целая вещь замены была характерна для удара. –  terdon♦ 29.09.2013, 20:50
  • 3
    Как я могу сделать это соответствие несколькими файлами и скопировать затем, но хранение расширения? –  Freedo 07.11.2017, 03:28
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 команда, для сохранения метаданных файла (особенно время изменения).

2
27.01.2020, 21:16

Теги

Похожие вопросы