txt ファイルの特定の行に複数のファイル名を印刷します。

txt ファイルの特定の行に複数のファイル名を印刷します。

ファイル名のリストをテキストファイルとして印刷しようとしていますが、特定のファイル名を同じ行に印刷する必要があります。たとえば、4つのファイルがあります。

Paleo_R1.fastq
Paleo_R2.fastq
Vegan_R1.fastq
Vegan_R2.fastq

私が望む出力は

Paleo_R1.fastq Paleo_R2.fastq
Vegan_R1.fastq Vegan_R2.fastq

ls関数を使用してテキストファイルに直接出力できることはわかっていますが、ls >> file.txt特定の入力行項目を特定の出力行に印刷するオプションはありません。

また、次のforループが利用可能であることを知っています>

for file in Vegan*R1*.fastq; 
do echo $file ${file%_R1.fastq}_R2.fastq >> file.txt;
done

しかし、各ファイル名に対して別々のコマンドを使用したくありません。ベジタリアンやパレオダイエットに適しています。

特定のラインを特定の出力ラインに印刷する方法はありますか(入力ライン1と2を出力ライン1に印刷し、入力ライン3と4を出力ライン2に印刷するなど...)

編集:このルールは、ファイル名ではなくすべてのN = 2ファイルに基づいています。

ベストアンサー1

おそらく

$ ls *.fastq | xargs -n2
Bar_R1.fastq Bar_R2.fastq
Bar_R3.fastq Foo_R1.fastq
Foo_R2.fastq Foo_R3.fastq
Paleo_R1.fastq Paleo_R2.fastq
Vegan_R1.fastq Vegan_R2.fastq

または熱出力の場合

$ ls *.fastq | xargs -n2 | column -t
Bar_R1.fastq    Bar_R2.fastq
Bar_R3.fastq    Foo_R1.fastq
Foo_R2.fastq    Foo_R3.fastq
Paleo_R1.fastq  Paleo_R2.fastq
Vegan_R1.fastq  Vegan_R2.fastq

(>> file.txtファイルに出力を追加するには、コマンドに追加)

どちらの例も、空白のないファイル名でのみ機能します。

空白のあるファイルの場合:

$ for i in *.fastq; do echo -ne "$i\0"; done | xargs -0 -n2

おすすめ記事