我对 bash 不太熟悉,无法正确解决这个问题,我会尽量简短地说明我想要解决的问题!
我在一个文件中存储了许多路径及其大小(以 G 为单位),如下所示:(sizegb,path)
1,/bin/path1
5,/bin/path2
25,/bin/path3
这样的路径有数百条。
我将有第二个文件,其中包含要移动到的目标磁盘,例如(GB 代表剩余空间):(sizeGB,DISK)
376,DISK1
555,DISK2
由于通常有数百个区域,大小各异,那么在两个磁盘之间“均匀”排序它们的最佳方法是什么?也就是说,如果我有 600 GB 需要移动,则分配 ~400G 给 DISK2,分配 ~200G 给 DISK1(因此剩余大小将为 176GB,DISK1 和 155GB,DISK2)
输出如下:
PATH,DISK
PATH,DISK2
提前致谢!
附言,
我也不是要求其他人完全做到这一点,我只是在寻找一些关于从哪里开始的好指示,或者关于什么是实际方法来做到这一点的想法!
答案1
将这两个文件加载到您首选语言的数组中。迭代文件并将其移动到具有最大剩余可用空间的目标。当您确实将该目标上的可用空间减少到刚刚移动到那里的文件的大小时。
这种方法不会给你带来绝对最平衡的安排,但会发现解决方案无法在多项式时间内计算出来(除非 P=NP...事实并非如此,相信我;)