次のような名前のファイルが複数あるとしましょう。
000001
000002
000003
...
これらの各ファイルはcsv
ファイルです(エスケープ文字を含めることができます)。このフォルダには~20GB
合計データが含まれています。これらのファイルを1つの最終ファイルにリンクするには?
重要な場合は通常Zsh
。
答え1
cat <->.csv > all.csv
これは<->
正の整数の10進数と一致し、すべての数字を(語彙順に、同じ数字順にゼロで埋められた数字で)連結しますall.csv
。
ただし、これによりディスク容量が2倍になります。元のファイルをアーカイブしたくない場合は、次の手順を実行します。
for i in <->.csv; do
cat $i && rm -f $i || break
done > all.csv
答え2
リダイレクトを使用すると、コンテンツがファイルに追加または上書きされます。ファイルに追加するには、次のようにします。
cat file.csv file2.csv file3.csv >> all.csv
次のコマンドはall.csvを上書きします。
cat file.csv file2.csv file3.csv > all.csv
しかし、すべてのCSVファイルを特定のディレクトリ(追加)にある1つのCSVファイルに移動するとします。
cat *.csv >> all.csv
答え3
なぜこれらすべてのファイルを1つのファイルにまとめるのですか?
標準入力が必要なプログラムに入力するには、次の手順を実行します。
cat *.csv | prog
または、前述の他の組み合わせ方法のいずれかを使用します。
プログラムに入力と呼ばれるファイルが必要な場合は、次のようにします。
mkfifo p cat *.csv > p & prog p
バックアップがより簡単なため、ファイルが必要な場合はすべてをまとめて圧縮すると便利です。解凍せずにファイルを読み取るには、tarファイルをフュージョンベースのファイルシステムに変換します。