2016-04-12 8 views
2

私はBASHスクリプティングには新しく、助けが必要です。複数のファイルをファイルのグループに連結

私は312個のファイルを39個のファイルグループに連結しようとしていますが、これは扱いにくいファイル名を持っています。

C9F4BANXX-1959-01-21-01_L003_R1.fastq

C9F4BANXX-1959-01-21-01_L004_R1.fastq

C9F4BANXX-1959-:1つのグループのための一連のファイルは次のようになります01-21-01_L005_R1.fastq

C9F4BANXX-1959-01-21-01_L006_R1.fastq

非常に不格好私は確信している(以下、私が使用してこのグループを連結する - しかし、それは)動作します:

cat *-01-*_*_R1.fastq > 01_R1.fastq 

ファイルは太字で(名前に第三の文字列が異なる)すなわち

C9F4BANXX-1959- -21-01_L003_R1.fastq

C9F4BANXX -1959- -21-01_L003_R1.fastq

私は私のょんを得るのに苦労しています位置に基づいて、4つのファイルの各グループの連結を繰り返すためにループを設定する方法の周りdがファイル名に助けを

感謝を示し

+0

猫とワイルドカードを使用するのはまったく違和感がありませんが、実際には(おそらく)最も効率的な方法です。 – 123

答えて

0

私は質問を理解していれば、正しく、あなたはのために使用することができますループ。

サブシェルでseqを使用して数字を埋め込むことができます。

for i in $(seq -f "%02g" 1 39);do cat *-"$i"-*_*_R1.fastq > "$i"_R1.fastq ;done 
+0

それに感謝しています。私は 'for'ループのさまざまなビットを一緒にして文字列の中央部分だけで動作させるのに苦労していました。 –

+0

seqコマンドと使用したフォーマットについて詳しく調べました。もう一度ありがとう - これは私が持っている他の仕事に使用するための素晴らしいツールです –

関連する問題