bash - 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 似乎是最合适的。
解决方案
您可以使用这个 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
,或2
在n
is时获取数字5..9
等。