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

时间:2012-07-20 07:02:54

标签: bash cp

在脚本中我有声明

eval cp "$chapter"/subsections/* $temp/subsections

但是,我不确定“$ chapter”/ subsections /中是否存在实际文件。结果我得到了错误:

cp: cannot stat `Commissioning/subsections/*': No such file or directory

cp中是否有选项可以避免投诉(我找不到任何投诉)?

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

1 个答案:

答案 0 :(得分:7)

真的不是cp抱怨。当您使用*之类的通配符时,shell会将它们替换为所有匹配文件的完整列表。当没有文件匹配时,它会离开*,告诉cp复制名为*的文件。

您可以改用以下技巧:

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

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