首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按顺序连接文件Linux命令

按顺序连接文件Linux命令
EN

Stack Overflow用户
提问于 2013-10-16 02:37:07
回答 2查看 6.8K关注 0票数 2

我刚刚开始学习使用命令行。希望这不是一个垃圾问题。

我的目录中有以下文件:

代码语言:javascript
运行
复制
L001_R1_001.fastq 
L002_R2_001.fastq 
L004_R1_001.fastq 
L005_R2_001.fastq
L001_R2_001.fastq 
L003_R1_001.fastq 
L004_R2_001.fastq 
L006_R1_001.fastq
L002_R1_001.fastq 
L003_R2_001.fastq 
L005_R1_001.fastq 
L006_R2_001.fastq

你可以在文件名中看到,它是R1和R2的混合,L00后面的数字没有排序。

我想按照文件名的顺序连接文件,分别用于R1和R2文件。

如果我手动完成,它将如下所示:

代码语言:javascript
运行
复制
# for R1 files
cat L001_R1_001.fastq L002_R1_001.fastq L003_R1_001.fastq L004_R1_001.fastq L005_R1_001.fastq L006_R1_001.fastq > R1.fastq


# for R2 files
cat L001_R2_001.fastq L002_R2_001.fastq L003_R2_001.fastq L004_R2_001.fastq L005_R2_001.fastq L006_R2_001.fastq > R2.fastq

你能帮我写一个我以后可以重用的脚本吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-10-16 02:43:35

代码语言:javascript
运行
复制
cat `ls -- *_R1_*.fastq | sort` >R1.fastq
cat `ls -- *_R2_*.fastq | sort` >R2.fastq

在大多数系统上不需要| sort,因为ls按名称对文件进行排序。

如果文件名包含空格,则首先执行以下操作:

代码语言:javascript
运行
复制
IFS='
'
票数 4
EN

Stack Overflow用户

发布于 2013-10-16 02:44:37

尝试使用通配符*。它将自动按字母顺序展开文件名。

代码语言:javascript
运行
复制
cat L*_R1_001.fastq > R1.fastq
cat L*_R2_001.fastq > R2.fastq

编辑

如果上面的命令没有提供所需的排序,请尝试按照Fredrik Pihl的建议使用LC_ALL=C覆盖区域设置

代码语言:javascript
运行
复制
LC_ALL=C cat L*_R1_001.fastq > R1.fastq
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19388646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档