首页 > 解决方案 > Bash & Mac OSX:如何将文件分组到 5 个批次的编号文件夹中?

问题描述

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

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

示例 运行脚本之前

apple.txt
new york.txt
ranger.txt
london.txt
the mountains (55).txt
so wonderful - new version.txt
my life a new.txt
orange.txt
property.txt
space.txt

运行脚本后

**In Folder 01**
apple.txt
new york.txt
ranger.txt
london.txt
the mountains (55).txt

**In Folder 02:**
so wonderful - new version.txt
my life a new.txt
orange.txt
property.txt
space.txt

(注意,这些文件夹只是被称为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 似乎是最合适的。

标签: bashmacos

解决方案


您可以使用这个 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)

(( (n++ + 5) / 5 ))是模算术以1在 is 时n获取数字0..4,或2nis时获取数字5..9等。


推荐阅读