Копирование файлов и папок с помощью cp с помощью shopt extglob - ошибка не является каталогом
Я пытаюсь скопировать файлы из каталога, исключая папку и файл. Моя проблема в том, что вы получаете ошибку при активированном покупаемом extglob. Вот мой код:
DEPLOY_SIMULATION_ENV="/home/user/Desktop/fancyproject/"
shopt -s extglob
cp -r ./!(nbproject|zexp.html) "$DEPLOY_SIMULATION_ENV"
shopt -u extglob
Это дает мне
‘/home/user/Desktop/myfancyproject/’ is not a directory
Конечно, я хочу, чтобы cp автоматически создал каталог myfancyproject. У меня сначала есть обходной путь с mkdir $DEPLOY_SIMULATION_ENV, но есть ли способ сделать это с помощью cp? Он ведет себя странно, когда активен extglob.
1 ответ
Вы уверены, что проблема не в использовании "пользователя" здесь...
DEPLOY_SIMULATION_ENV="/home/user/Desktop/fancyproject/"
Если имя учетной записи не "пользователь", произойдет сбой с той же ошибкой, что и вы. Тебе нужно $USER
если вы хотите фактического пользователя.
Есть ли способ сделать это с помощью cp
Да... но не так, как вы ожидаете.
--родители
Сформируйте имя каждого файла назначения, добавив в целевой каталог косую черту и указанное имя исходного файла. Последний аргумент, передаваемый cp, должен быть именем существующего каталога. Например, команда:
cp --parents dir1/dir2/file1 dir3
создаст /dir1/dir2
внутри dir3
(должен уже существовать) и скопировать file1
внутрь.