如何复制保持父目录部分文件夹结构的文件夹列表



假设我想从具有这些文件夹find /40/AD/GWAS_data/Source_Plink/2021_ADGC_EOAD -name "plink_data*"复制一些文件夹:

/40/AD/GWAS_data/Source_Plink/2021_ADGC_EOAD/ADGC_NHW/ADNI/TOPMEDr2/vcffile/plink_data
/40/AD/GWAS_data/Source_Plink/2021_ADGC_EOAD/ADGC_ASIAN/BIOCARD/TOPMEDr2/vcffile/plink_data

放入/40/AD/GWAS_data/Source_Plink/2021_ADGC_EOAD/NEW_DIR/,但我希望新目录具有:

/40/AD/GWAS_data/Source_Plink/2021_ADGC_EOAD/NEW_DIR/ADGC_NHW/ADNI/TOPMEDr2/vcffile/plink_data
/40/AD/GWAS_data/Source_Plink/2021_ADGC_EOAD/NEW_DIR/ADGC_ASIAN/BIOCARD/TOPMEDr2/vcffile/plink_data

我试过这个,但它复制了整个路径:find /40/AD/GWAS_data/Source_Plink/2021_ADGC_EOAD -name "plink_data*" -exec cp --parents {} /target ;

我该怎么做?谢谢!

更新:我能够使用@Cyrus的答案与cp一起执行我的任务,但不能使用mv。我以为在这个命令中应用cpmv不会有任何不同,但我错了。事实上,我需要同时使用mvcp来完成不同的任务,所以我求助于使用循环

for line in $(find . -name "*plink_data*"); do
new_FOLD="$(echo  $line| cut -d"." -f2-)"
mkdir -p "NEW_DIR/${new_FOLD}"
cp/mv $line "NEW_DIR/${new_FOLD}"
done

我建议:

cd /40/AD/GWAS_data/Source_Plink/2021_ADGC_EOAD
mkdir -p NEW_DIR
find . -name "plink_data" -not -path "./NEW_DIR/*" -exec cp --parent {} NEW_DIR ;

相关内容

  • 没有找到相关文章

最新更新