我有两个工作目录,每个工作目录由几个文件夹组成(这些文件夹的名称在两个目录之间相等)。
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)文件夹。
答案 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 -v
,cp
然后输出from -> to
。
否则你可以添加循环:
echo "coping in folder: $to/$title"