生成一个文件列表,并将其截断为 2 个文件列表,每个文件包含 X Mb

生成一个文件列表,并将其截断为 2 个文件列表,每个文件包含 X Mb

我需要生成某个目录中所有文件的列表,并将其截断为 X 个列表,每个列表包含固定数量的文件数据。

例如我有95 Gb 的数据。

  • 生成文件列表(total.txt
  • 分为total.txt3 个列表:
    1. slice1.txt包含前 35 GB 文件的列表
    2. slice2.txt包含以下 35 GB 文件的列表
    3. slice3.txt包含剩余文件的列表

有什么提示吗?我已经用 Google 搜索过,也尝试过 find、awk、grep,但这项任务似乎真的超出了我的能力范围。

答案1

您可以尝试使用分裂命令来分离文件:

split total.txt -b 4444160

以上内容将分成total.txt35 GB 的文件。

答案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

相关内容