特定のディレクトリ内のすべてのファイルのリストを生成し、それぞれ一定量のファイルデータを含む X リストに切り捨てる必要があります。
たとえば、95 GB のデータがあります。
- ファイルリストを生成する(
total.txt
) - 3つのリストに分割
total.txt
:slice1.txt
最初の35GBのファイルのリストを含むslice2.txt
以下の35GBのファイルのリストを含むslice3.txt
残りのファイルのリストを含む
何かヒントはありますか? Google で検索したり、find、awk、grep を試してみたりしましたが、このタスクは私の能力を超えているようです。
答え1
答え2
while read filename; do cat $filename; done < total.txt | split -b 35G - slice
これにより、「sliceaa」、「sliceab」、「sliceac」が作成され、名前を変更できます。
他の実装ではsplit
、あなたは言う必要があるかもしれません-b 35000m
bashをお持ちの場合は、次のように記述できます。
cat $(< total.txt) | split -b 35G - slice
ファイル名が数百または数千あるわけではないと想定します。
作成するにはtotal.txt
files=(*)
printf "%s\n" "${files[@]}" > total.txt