2015-03-31 100 views
0

我有兩個工作目錄,每個目錄由幾個文件夾組成(這兩個文件夾的名稱相同)。使用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},以確保將從dir1中的每個初始文件夾複製到dir2中具有完全相同名稱的文件夾中:

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

該腳本是否正確?

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

+2

使用'CP -v':

否則,你可以添加循環。 – arco444 2015-03-31 13:53:13

回答

0

如果目錄${to}/${title}不存在,則複製將失敗。請確保它存在的第一:

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

記得引用您的"$vars" - 括號是不一樣的。

0

有@ arco444建議你可以cp -vcp然後會輸出from -> to。詳細輸出

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