系统相关
首页 > 系统相关> > linux – 将大量文件分发到较小组的脚本

linux – 将大量文件分发到较小组的脚本

作者:互联网

我有包含各种大小的大量文件(例如1000)的文件夹,我想将其移动到较小的组,例如每个文件夹100个文件.

我写了一个Apple脚本,它计算了文件,创建了一个带编号的子文件夹,然后将100个文件移动到新文件夹(可以指定文件数),这个文件循环到它移入的文件数量少于指定数量的文件它创建的最后一个文件夹.

问题是它的速度非常慢.我正在寻找可以在我的MacBook和/或Linux机器上运行的Apple脚本或shell脚本,它可以有效地将文件移动到更小的组中.

如何对文件进行分组并不是特别重要,我只想在每个文件夹中减少文件数量.

解决方法:

这应该让你开始:

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语句获取最后剩余的文件.修改后,您可以根据需要添加一些额外的检查.

标签:linux,shell,scripting,applescript
来源: https://codeday.me/bug/20190827/1737539.html