根据内容将torrent文件排序为100GB的文件夹

问题描述 投票:1回答:1

我有一个文件夹完整的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

我认为这是一个“多背包问题” - 尽管我只是在寻找近似值。了解如何使用最佳解决方案进行求解将会很有趣 - 一种更简单的方法是填充目录,直到下一个文件溢出,然后转移到下一个存储桶,即使这会留下空白空间。

bash knapsack-problem bittorrent
1个回答
-1
投票

您需要一个CLI工具,它可以从torrent或一个处理bedecoding的库中提取实际文件大小,也可能需要更高级别的抽象,例如获取文件列表,然后在其上实现拆分。

使用grep和awk太脆弱,因为torrent可以包含与您的模式匹配的文本字符串。

© www.soinside.com 2019 - 2024. All rights reserved.