使用bash复制文件

时间:2015-03-31 13:50:53

标签: bash

我有两个工作目录,每个工作目录由几个文件夹组成(这些文件夹的名称在两个目录之间相等)。

from=/home/cmoon/OR5P3_4nax
to=/home/cmoon/total_decomp

因为$from中每个文件夹的名称与$to中的文件夹相对应,我需要使用以下文件将一些文件(md.in)从一个文件夹复制到另一个文件夹:

for sim in ${from}/OR5P3_* ; do
 if [[ -d $sim ]]; then
   title=$(basename "$sim")
   pushd $sim
   cp md.nc ${to}/${title}/md3.nc
   popd
 fi
done

在这里,我使用${title}确保将md.nc从dir1中的每个初始文件夹复制到dir2中名称完全相同的文件夹:

e.g  /${from}/lala1 -> /${to}/lala1
e.g  /${from}/lala2 -> /${to}/lala2
e.g  /${from}/lala10 -> /${to}/lala10

这个脚本是否正确?

如何向脚本添加一些打印消息,以查看究竟是什么(我猜使用PWD)文件夹。

2 个答案:

答案 0 :(得分:0)

如果目录${to}/${title}不存在,则副本将失败。确保它首先存在:

mkdir -p "$to/$title"          # use `-p` to avoid error if it already exists
cp md.nc "$to/$title/md3.nc"

请记住引用您的"$vars" - 大括号不一样。

答案 1 :(得分:0)

@ arco444建议您cp -vcp然后输出from -> to

否则你可以添加循环:

 echo "coping in folder: $to/$title"