前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带着文件夹结构的拷贝

带着文件夹结构的拷贝

作者头像
生信技能树
发布2021-02-03 15:58:34
1.2K0
发布2021-02-03 15:58:34
举报
文章被收录于专栏:生信技能树生信技能树

最近接了一个单细胞转录组项目,有80个10X样品,每个样品的单细胞测序数据都是100G左右的fq.gz文件,很不容易跑完了全部的cellranger流程,发现了一个很有意思的事情,每个样品的输出文件都很很复杂。这个时候我需要把各自样品的html文件拷贝并且改名后先给客户开卡,如下所示的结构:

代码语言:javascript
复制
sample01/outs/web_summary.html
sample02/outs/web_summary.html
sample03/outs/web_summary.html
sample04/outs/web_summary.html
sample05/outs/web_summary.html

本来呢是想使用cp命令,但是 cp 这个命令有很多参数:

  • –v verbose: shows the progress of multiple copied files
  • –p preserve: keeps the same attributes, like creation date and file permissions
  • –f force: force the copy by deleting an existing file first
  • –i interactive: prompts for confirmation, highly advised
  • –R recursive: copies all files and subfolders in a directory
  • –u update: copy only if source is newer than destination

居然没有拷贝的同时保持文件夹结构,因为不同样品不同文件夹下面的文件名字是一样的,如果拷贝到一起会出现文件名冲突。

这个时候有两个选项,除了前面提到的拷贝的同时保留文件夹结构,还可以拷贝后修改文件名字,就使用它的路径名字就是样品名字。

搜索了一下,发现没有成熟的解决方案,懒得浪费时间了,就考虑自己造轮子,随便写了个代码,如下所示;

代码语言:javascript
复制
mkdir ~/html/
ls */outs/web_summary.html |while read id;do (cp $id ~/html/${id%%/*}.html );done

mkdir ~/matrix/
ls -d */outs/filtered_feature_bc_matrix |while read id;do (cp -r  $id ~/matrix/${id%%/*} );done

还挺好用的,其实也可以试用高级命令,比如 rsync 。

布置一个学徒作业吧,我前面的代码是拷贝文件的同时给它改名了,但是其实也可以拷贝的同时也保持原来的文件夹结构,大家试试看!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档