我需要生成某个目录中所有文件的列表,并将其截断为 X 个列表,每个列表包含固定数量的文件数据。
例如我有95 Gb 的数据。
- 生成文件列表(
total.txt
) - 分为
total.txt
3 个列表:slice1.txt
包含前 35 GB 文件的列表slice2.txt
包含以下 35 GB 文件的列表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