我想将文件夹内的所有文件复制dmir.bedpostX
到其他位置,保留结构。
Bedpost_Controls
└───C01
│ └─── dmri.bedpostX
│ └─── *files*
└───C02
│ └─── dmri.bedpostX
│ └─── *files*
└───C03
│ └─── dmri.bedpostX
│ └─── *files*
Bedpost_Patients
└───H01
│ └─── dmri.bedpostX
│ └─── *files*
│
因此,在我的新目录中,我将拥有上面看到的文件夹分布。问题是,C01, C02
文件夹等里面还有其他我不想复制的文件。
这就是我所拥有的:
#!/bin/bash
DIR="/media/HD_2/mark/Analysis"
for group in Controls Patients; do
cd "$DIR/Bedpost_${group}" || exit
for folder in *; do
orig="$folder/dmri.bedpostX"
dest="/media/HD_2/roy/Analysis/Bedpost_${group}/$orig";
mkdir -p $dest
cp "$orig/*" "$dest/"
done;
done;
这将复制目录,但无法识别全局变量:
cp: cannot stat '/H47_1/dmri.bedpostX/*': No such file or directory
我尝试将有"
和没有两种情况都进行整合。
编辑:我尝试使用命令仅复制一个文件,cp "$orig/nodif_brain_mask.nii.gz" "$dest/"
但出现错误:
cp: cannot stat '/C01_1/dmri.bedpostX/nodif_brain_mask.nii.gz': No such file or directory
这是怎么回事? 同样的脚本以前可以用于不同的文件。
答案1
如果您不受 bash 的限制,我会看看 rsync,您可以使用模式匹配排除某些文件[https://www.howtogeek.com/168009/how-to-exclude-files-from-rsync/]。
至于你的 Bash 脚本问题,
orig="$folder/dmri.bedpostX" - $folder 是绝对路径 (以 / 开头),您是否想在其前面加上 $DIR/ ?