用于将大量文件分发到较小的组的脚本
收藏

我有包含大量不同大小的文件(例如1000+)的文件夹,我希望将这些文件移到更小的组中,例如,每个文件夹100个文件。
我编写了一个apple脚本,计算文件数量,创建一个编号的子文件夹,然后将100个文件移动到新文件夹(可以指定文件数量),该文件夹循环运行,直到移动到它创建的最后一个文件夹中的文件数量少于指定数量。
问题是它跑得太慢了。我正在寻找一个苹果脚本或shell脚本,我可以在我的macbook和/或linux机器上运行,这将有效地将文件移动到更小的组中。
文件的分组方式不是特别重要,我只是希望每个文件夹中的文件更少。


最佳答案:

这会让你开始:

DIR=$1
BATCH_SIZE=$2
SUBFOLDER_NAME=$3
COUNTER=1

while [ `find $DIR -maxdepth 1 -type f| wc -l` -gt $BATCH_SIZE ] ; do
  NEW_DIR=$DIR/${SUBFOLDER_NAME}${COUNTER}
  mkdir $NEW_DIR
  find $DIR -maxdepth 1 -type f | head -n $BATCH_SIZE | xargs -I {} mv {} $NEW_DIR
  let COUNTER++
if [ `find $DIR -maxdepth 1 -type f| wc -l` -le $BATCH_SIZE ] ; then
  mkdir $NEW_DIR
  find $DIR -maxdepth 1 -type f | head -n $BATCH_SIZE | xargs -I {} mv {} $NEW_DIR
fi
done

嵌套if语句获取最后剩余的文件。修改后,可以根据需要添加一些附加检查以供使用。

公众号