我有一个文件夹完整的torrent文件,我想根据torrent文件的内容大小排序成一个更易于管理的大小。
这是我发现的最简单的方法,它有一个列表,其中包含每个torrent文件引用内容的大小:
for file in *.torrent; do
head -1 "$file" | grep -aoE '6:lengthi[0-9]+' | cut -di -f2 | awk '{s+=$1} END {print s}';
done
我无法找到一种聪明的方法将这些文件移动到文件夹中,以便它们不超过100GB。
我希望它最终像这样:
directory 1
---> torrent 1 - 50GB
---> torrent 2 - 25GB
---> torrent 3 - 24GB
directory 2
---> torrent 1 - 10GB
---> torrent 2 - 85GB
directory 3
---> torrent 1 - 90GB
我认为这是一个“多背包问题” - 尽管我只是在寻找近似值。了解如何使用最佳解决方案进行求解将会很有趣 - 一种更简单的方法是填充目录,直到下一个文件溢出,然后转移到下一个存储桶,即使这会留下空白空间。
您需要一个CLI工具,它可以从torrent或一个处理bedecoding的库中提取实际文件大小,也可能需要更高级别的抽象,例如获取文件列表,然后在其上实现拆分。
使用grep和awk太脆弱,因为torrent可以包含与您的模式匹配的文本字符串。