我想将一个名为dti_fin_fa的文件列表从一个文件夹复制到另一个文件夹。
这些文件分散在不同的文件夹中。
Controls
└───C01
│ └───difusion
│ └───Deterministic
│ └───dti_fin_fa.nii
└───C02
│ └───difusion
│ └───Deterministic
│ └───dti_fin_fa.nii
└───C03
│ └───difusion
│ └───Deterministic
│ └───dti_fin_fa.nii我想选择并复制所有的dti_fin_fa,保留文件夹结构,因此,在我的新目录中,我将拥有上面看到的文件夹分布。问题是,在这个文件夹中(deterministic,difusion等),有很多其他我不想复制的文件,所以我不能只复制主文件夹(C01等)
这就是我所拥有的:
#!/bin/bash
DIR="/media/Batty/Analysis"; cd "$DIR" || exit
for group in Controls; do
for folder in $group/*; do
for dti in $folder/difussion/Deterministic/dti_fin_fa.nii; do
echo $dti
cp $dti /media/Roy/Analysis/Controls/ --verbose
done;
done;
done;问题是,这段代码将每个dti_fin_fa.nii图像复制到/media/Roy/Analysis/Controls/中,因此只保留最后一个,而不是创建所有其他子文件夹。
这样的东西能行得通吗?
cp $folder/difusion/Deterministic/$dti /media/Roy/Analysis/Patients/ --verbose
发布于 2021-04-22 20:21:25
遍历每个控件,创建等效的目录,然后只复制所需的文件:
for group in "Control"/* "Patients"/*; do
orig="$group/difusion/Deterministic"
dest="/media/Roy/Analysis/Controls/$(dirname group)/$orig"
mkdir -p "$dest"
cp "$orig/dti_fin_fa.nii" "$dest/"
done我假设您是从示例的DIR目录执行此命令的。因此,这里的orig是图像文件夹的相对路径,dest是目标目录的绝对路径,包括保留的原始文件夹结构。mkdir -p确保这样的结束目录存在,最后复制镜像。
https://stackoverflow.com/questions/67213080
复制相似问题