在目录中,我有数千个文件。其中一些名称包含geno_chr1_all.txt
,geno_chr2_all.txt
,geno_chr3_all.txt
等名称。
geno_chr1_all.txt
1 2 3 4
2 4 5 6
geno_chr2_all.txt
2 5 6 7
1 1 2 2
geno_chr3_all.txt
8 8 8 8
0 9 0 9
我想按照1,2,3,...
使用Unix命令给出的顺序(通过列)连接这些文件的内容。然后,我想创建一个包含以下内容的文件output_file.txt
:
output_file.txt
1 2 3 4
2 4 5 6
2 5 6 7
1 1 2 2
8 8 8 8
0 9 0 9
任何建议都会受到欢迎!
答案 0 :(得分:1)
$ echo "1 1 1" > geno_chr1_all.txt
$ echo "2 2 2" > geno_chr2_all.txt
$ echo "3 3 3" > geno_chr3_all.txt
$ echo "10 10 10" > geno_chr10_all.txt
使用?
表示每个文件名中的数字
$ cat geno_chr?_all.txt geno_chr??_all.txt > outputfile.txt
$ cat outputfile.txt
1 1 1
2 2 2
3 3 3
10 10 10
?
表示单个字符,而??
表示两个字符,依此类推......在这种情况下,它表示排序数字。如果有一千个文件,可以这样做:
$ cat geno_chr?_all.txt geno_chr??_all.txt geno_chr???_all.txt geno_chr????_all.txt > outputfile.txt
您还可以使用shell扩展{..}
来表示所有相关文件,
$ cat geno_chr{?,??,???,????}_all.txt