如何将目录中的大量zip文件移动到bash中指定数量的多个子目录?

时间:2016-04-20 04:23:59

标签: linux bash unix compression system-administration

在当前目录中有数百个.zip文件。此目录中还有六个名为0到5的子目录.zip文件需要均匀分布(或尽可能接近)并移动到这些子目录中。我不关心哪些文件最终存在于哪些子目录中,只要它们均匀分布即可。

我如何尝试实现这一目标。我应该使用maxdepth并尝试查找子目录的计数,然后递归放置文件或我该怎么办?

1 个答案:

答案 0 :(得分:1)

这是一个快速而肮脏的解决方案:对于每个zip文件,将目标目录号增加1,然后将其移动到那里。

如果目标目录号码不再可用,请重置目标目录号码。

#!/usr/bin/env bash

declare -i i=0
for f in *.zip; do
    mv ${f} ${i}/
    i=$i+1
    if [[ ! -d $i ]]; then
        i=0 
    fi
done

现在请注意,这根本不是万无一失的,它会为每个文件产生一个单独的移动过程。如果你只需要这样做一次,我认为不值得花费更多脑细胞。但是,如果这是你想定期做的事情,你应该考虑可能发生什么样的错误,如何抓住它们,甚至可能看看更有效的运动。