![使用 cp 和 shopt extglob 复制文件和文件夹-错误不是目录](https://linux22.com/image/862341/%E4%BD%BF%E7%94%A8%20cp%20%E5%92%8C%20shopt%20extglob%20%E5%A4%8D%E5%88%B6%E6%96%87%E4%BB%B6%E5%92%8C%E6%96%87%E4%BB%B6%E5%A4%B9-%E9%94%99%E8%AF%AF%E4%B8%8D%E6%98%AF%E7%9B%AE%E5%BD%95.png)
我正在尝试从目录中复制文件,同时排除文件夹和文件。我的问题是,在激活 shopt 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 创建目录我的花哨项目自动。我有一个解决方法mkdir $DEPLOY_SIMULATION_ENV首先,但是有没有办法用 cp 来实现呢?当外接球活跃。
答案1
你确定问题不在于这里“用户”的使用吗?
DEPLOY_SIMULATION_ENV="/home/user/Desktop/fancyproject/"
如果帐户名称不是“用户”,则会失败并出现与你显示相同的错误。$USER
如果你想要实际用户,则需要。
有没有办法用 cp 来实现
是的...但不是你所期望的那样。
- 父母
通过在目标目录后附加斜杠和源文件的指定名称来形成每个目标文件的名称。cp 给出的最后一个参数必须是现有目录的名称。例如,命令:
cp --parents dir1/dir2/file1 dir3
/dir1/dir2
将在内部创建dir3
(需要已经存在)并复制file1
到其中。