首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash -迭代复制文件

Bash -迭代复制文件
EN

Stack Overflow用户
提问于 2021-04-22 20:11:52
回答 1查看 29关注 0票数 0

我想将一个名为dti_fin_fa的文件列表从一个文件夹复制到另一个文件夹。

这些文件分散在不同的文件夹中。

代码语言:javascript
复制
   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,保留文件夹结构,因此,在我的新目录中,我将拥有上面看到的文件夹分布。问题是,在这个文件夹中(deterministicdifusion等),有很多其他我不想复制的文件,所以我不能只复制主文件夹(C01等)

这就是我所拥有的:

代码语言:javascript
复制
#!/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

EN

回答 1

Stack Overflow用户

发布于 2021-04-22 20:21:25

遍历每个控件,创建等效的目录,然后只复制所需的文件:

代码语言:javascript
复制
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确保这样的结束目录存在,最后复制镜像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67213080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档