我在用Ubuntu 18.04.5 LTS
。
我创建了以下脚本来将文件夹中的文件拆分到不同的子文件夹中:
#!/bin/bash
dir_size=850
dir_name="images"
n=$((`find . -maxdepth 1 -type f | wc -l`/$dir_size+1))
for i in `seq 1 $n`;
do
mkdir -p "$dir_name$i";
find . -maxdepth 1 -type f | head -n $dir_size | xargs -i mv "{}" "$dir_name$i"
done
不过,我希望zip
在创建之后对每个子文件夹进行压缩,这样我最终的目录中就只能得到压缩的子文件夹。
对于如何做到这一点有什么建议吗?
感谢您的回复!
答案1
您可以使用 for 循环来获取固定数量的项目。将随着每次迭代a
的数量c
而增加。b
#!/bin/bash
mapfile -td '' < <( \
find -maxdepth 1 -type f ! -name '*.zip' -print0 \
)
((${#MAPFILE} == 0)) && exit 1
for ((a=0, b=0, c=850; a<${#MAPFILE[@]}; a+=c, b++)); do
mkdir images$b && \
mv -t $_ "${MAPFILE[@]:$a:$c}" && zip -mTr images$b images$b
done