Bash&;Mac OSX:如何将文件按5个批次分组到带编号的文件夹中?

Bash&;Mac OSX:如何将文件按5个批次分组到带编号的文件夹中?,bash,macos,Bash,Macos,我在Mac Os 10.14.6上,有一个包含所有包含文本文件的子目录的目录。总共有数百个文本文件 我想浏览文本文件并将其分组到编号的文件夹中,因此每个文件夹包含5个文件(它们不需要按任何公共因素分组(例如,它们不需要按名称或大小分组)。它们只需要在一个文件夹中有5个文件) 示例 在运行脚本之前 运行脚本后 (注意,这些文件夹只称为01、02、03,它们没有任何特殊名称) 我该怎么做 我尝试过的步骤 在谷歌周围,Bash似乎是最好的选择 在Bash中,您可以使用a命令创建一个数组来存储文件,从

我在Mac Os 10.14.6上,有一个包含所有包含文本文件的子目录的目录。总共有数百个文本文件

我想浏览文本文件并将其分组到编号的文件夹中,因此每个文件夹包含5个文件(它们不需要按任何公共因素分组(例如,它们不需要按名称或大小分组)。它们只需要在一个文件夹中有5个文件)

示例 在运行脚本之前

运行脚本后

(注意,这些文件夹只称为
01、02、03,
它们没有任何特殊名称)

我该怎么做


我尝试过的步骤

在谷歌周围,Bash似乎是最好的选择

在Bash中,您可以使用
a
命令创建一个数组来存储文件,从而可以使用它们。然后可以循环遍历这些文件,将它们放入数组中

declare -a arrFiles
for file in cd
do
    arrFiles=("${Files[@]}" "$file")
done
Bash还有
mv
命令,可用于将文件移动到新位置

但是,我不知道如何将这些命令组合起来,将文件分为5个批次


请注意:只要解决方案在Mac OS终端上运行,就不需要使用Bash。然而,从谷歌搜索来看,Bash似乎是最合适的。您可以使用以下Bash脚本:

unset n
while IFS= read -rd '' f; do
    printf -v d '%02d' $(( (n++ + 5) / 5 ))
    [[ ! -d $d ]] && mkdir "$d"
    mv "$f" "$d/"
done < <(find . -type f -maxdepth 1 -print0)
unset n
而IFS=read-rd''f;做
printf-vd“%02d”$((n+++5)/5))
[!-d$d]]和&mkdir“$d”
mv“$f”$d/”

donea
不是命令
for f in cd
只需循环一次,变量
f
设置为静态字符串
cd
。可能需要阅读该语言的基本介绍,或者就语法中需要帮助的部分单独提问。谢谢!是否可以删除word文件夹,这样文件夹就被称为
01
02
03
(所以数字是两位数?)
declare -a arrFiles
for file in cd
do
    arrFiles=("${Files[@]}" "$file")
done
unset n
while IFS= read -rd '' f; do
    printf -v d '%02d' $(( (n++ + 5) / 5 ))
    [[ ! -d $d ]] && mkdir "$d"
    mv "$f" "$d/"
done < <(find . -type f -maxdepth 1 -print0)