使用 unix,将文件从嵌套目录复制、重新定位和重命名到名称源自路径的 dir

使用 unix,将文件从嵌套目录复制、重新定位和重命名到名称源自路径的 dir

我有一个 file.txt,其中包含 100 个文件及其路径的列表。以下是前 3 个条目:

/project/msun/USERS/me/czi/data/lb/MAP-9-003/c44caf4c-cab7-4749-9940-a74a66bceec3/c44caf4c-cab7-4749-9940-a74a66bceec3.bam
/project/msun/USERS/me/czi/data/lb/MAP-9-007/3e5a10e0-3928-40c5-8dfb-9bbe9d5e0105/3e5a10e0-3928-40c5-8dfb-9bbe9d5e0105.bam
/project/msun/USERS/me/czi/data/lb/MAP-9-013/e230fce2-8f54-4d30-bb75-38d11a438f68/e230fce2-8f54-4d30-bb75-38d11a438f68.bam

我想cp这些文件,重命名新文件并将它们放在另一个目录和路径中,其中新目录名称是旧路径第8级的目录,新文件名=新目录名称+文件扩展名。新的目录位置也会发生变化。我会将新文件排序如下:

/project/msun/USERS/me/czi/data/map/MAP-9-003/MAP-9-003.bam #(old c44caf4c-cab7-4749-9940-a74a66bceec3.bam)
/project/msun/USERS/me/czi/data/map/MAP-9-007/MAP-9-007.bam #(old 3e5a10e0-3928-40c5-8dfb-9bbe9d5e0105.bam)
/project/msun/USERS/me/czi/data/map/MAP-9-013/MAP-9-013.bam #(old e230fce2-8f54-4d30-bb75-38d11a438f68.bam)

我找到了这些帖子: 使用 xargs 复制目录将具有特定扩展名的文件从许多嵌套子目录复制到单个目录,并将目录名称附加到每个复制的文件中

执行相关任务,但我无法执行特定任务

答案1

我让你将文件复制到你想要的位置。要重命名,请使用珀尔的rename:

删除-n开关,又名试运行当你的尝试令人满意时重命名为真实的

mkdir -p ./project/msun/USERS/me/czi/data/map
rename -n 's@(project/msun/USERS/me/czi/data/)lb/(MAP-.*?)/.*/.*.bam@$1map/$2.bam@' ./project/msun/USERS/me/czi/data/lb/MAP-9-0*/*/*.bam
# rm -rf ./project/msun/USERS/me/czi/data/lb/MAP*

相关内容