Bash:如何复制目录';s文件(如果存在)

Bash:如何复制目录';s文件(如果存在),bash,cp,Bash,Cp,在脚本中,我有一个语句 eval cp "$chapter"/subsections/* $temp/subsections 但是,我不确定“$chapter”/subsections/中是否确实有文件。因此,我会出现以下错误: cp: cannot stat `Commissioning/subsections/*': No such file or directory cp中是否有避免投诉的选项(我找不到) 有没有一种简单的方法来检查目录中是否存在任何文件 这不是真正的cp抱怨。当您使用

在脚本中,我有一个语句

eval cp "$chapter"/subsections/* $temp/subsections
但是,我不确定“$chapter”/subsections/中是否确实有文件。因此,我会出现以下错误:

cp: cannot stat `Commissioning/subsections/*': No such file or directory
cp中是否有避免投诉的选项(我找不到)


有没有一种简单的方法来检查目录中是否存在任何文件

这不是真正的
cp
抱怨。当您使用通配符(如
*
)时,shell将用所有匹配文件的完整列表替换它们。当没有文件匹配时,它只留下
*
,告诉
cp
复制名为
*
的文件

您可以使用以下技巧:

cp -r "${chapter}"/subsections/. "${temp}"/subsections

现在,您将把整个目录传递给
cp
,并请求递归复制它。由于您是通过
引用它,
cp
不会复制它的名称,而只复制它的内容。

eval有什么用?这是一个完全多余的复杂问题。您的建议与只执行
cp-r“${chapter}”/subsections“${temp}”/subsections
之间有什么区别?如果
“${temp}”/subsections
存在,您的命令将创建一个
“${temp}”/subsections/subsections