繁体   English   中英

在linux中,将多个目录中的同名文件复制到一个以路径不同为名称的新目录中

[英]In linux, copy files with the same name in multiple directories, to a new directory with the path difference as name

我在需要整理和分析的子目录中有几百个输出患者文件。

/project/folder1/folder2/samplenumber/file.filetype

我需要将所有这些从托管区域复制到我自己的工作区进行分析

我想结束

/mydrive/myproject/myfolder/samplenumber.filetype
/mydrive/myproject/myfolder/samplenumber.filetype
/mydrive/myproject/myfolder/samplenumber.filetype

我想像

cp -v /project/folder1/folder2/*/file.filetype /mydrive/myproject/myfolder/*.filetype

会有这个功能吗?

您将需要为此使用 find 命令,在循环中解析输出

find /project/folder1/folder2 -name "*.filetype" | while read line
do 
    payth=${line%/*.*}
    samp=${payth#/*/*/*/}
    cp "$line" "/mydrive/myproject/myfolder/$samp.filetype"
done

对于 find 命令返回的每一行,我们将变量 payth 设置为文件的路径(使用 bash 参数扩展和后缀模式匹配)。 然后我们使用这个 payth 变量来获取最后一个目录(利用 bash 参数扩展和前缀模式匹配)将其读入变量 samp。 这个变量 samp 最终在复制命令中用作文件名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM