ファイルを1つにマージ[重複]

ファイルを1つにマージ[重複]

次のファイル名を持つフォルダがある場合:

cluster_sizes_0.txt
cluster_sizes_1.txt
cluster_size_2.txt

など。

各ファイルには値の列が含まれています。

LinuxにすべてのファイルをCluster_all.txtにマージするコマンドはありますか?

この新しいファイルの最初の列はに対応し、2番目の列は等に対応cluster_sizes_0.txtします。cluster_sizes_1.txt

クラスタ化されたtxtファイルは最大200個まで存在できますが、各フォルダは異なります。これらのファイルを1つずつコピーせずに組み合わせることができる方法を探しています。

また、ファイルに順番に貼り付けられていることを確認する必要があります。 10未満の場合は1桁の数字しか含まれていないため、番号付けシステムにはいくつかの問題が発生する可能性があります。

たとえば、

paste cluster_size.* > cluster_all.txt番号付けの問題により、順番に貼り付けられませんでした。すべての番号を手動で変更せずに番号付けを変更するにはどうすればよいですか?

ベストアンサー1

このコマンドはpaste列を一緒にマージします。たとえば、次の3つのファイルがある場合は、貼り付けると良い結果が得られます。

$ cat file_1.txt
1a
1b
1c

$ cat file_2.txt
2a
2b
2c

$ cat file_3.txt
3a
3b
3c

$ paste -d, file_1.txt file_2.txt file_3.txt
1a,2a,3a
1b,2b,3b
1c,2c,3c

今問題は実際にファイルを順番にインポートする方法です。私たちはだまされ、ls他の人が私たちのために働くことができます

$ ls     
file_1.txt   file_13.txt  file_17.txt  file_20.txt  file_6.txt
file_10.txt  file_14.txt  file_18.txt  file_3.txt   file_7.txt
file_11.txt  file_15.txt  file_19.txt  file_4.txt   file_8.txt
file_12.txt  file_16.txt  file_2.txt   file_5.txt   file_9.txt

$ ls -v
file_1.txt  file_5.txt  file_9.txt   file_13.txt  file_17.txt
file_2.txt  file_6.txt  file_10.txt  file_14.txt  file_18.txt
file_3.txt  file_7.txt  file_11.txt  file_15.txt  file_19.txt
file_4.txt  file_8.txt  file_12.txt  file_16.txt  file_20.txt

$ paste -d, $(ls -v file_*.txt)
1a,2a,3a,4a,5a,6a,7a,8a,9a,10a,11a,12a,13a,14a,15a,16a,17a,18a,19a,20a
1b,2b,3b,4b,5b,6b,7b,8b,9b,10b,11b,12b,13b,14b,15b,16b,17b,18b,19b,20b
1c,2c,3c,4c,5c,6c,7c,8c,9c,10c,11c,12c,13c,14c,15c,16c,17c,18c,19c,20c

今、解析はls一般的に悪いものです。予期しないファイル名や奇妙な文字(スペース、ワイルドカードなど)があると、スクリプトがクラッシュする可能性があります。しかし、ファイル名が「ok」であると確信している場合、これはうまくいくでしょう。

おすすめ記事