如何复制文件夹列表以保持父目录的部分文件夹结构
How to copy list of folders keeping the partial folder structure that of parent directory
假设我想从 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
。我认为在此命令中应用 cp
和 mv
不会有任何不同,但我错了。事实上,我需要同时使用 mv
和 cp
来完成不同的任务,所以我求助于使用循环
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 \;
假设我想从 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
。我认为在此命令中应用 cp
和 mv
不会有任何不同,但我错了。事实上,我需要同时使用 mv
和 cp
来完成不同的任务,所以我求助于使用循环
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 \;