我有一个目录,里面有超过一千张图片。我想将文件拆分成多个子目录,每个子目录包含 100 个文件。我该怎么做?
答案1
以下对我而言很有效。在终端中打开目录,然后复制并粘贴以下脚本,按回车键。将在其中创建名为 dir_001、dir_002 等的子目录。
i=0;
for f in *;
do
d=dir_$(printf %03d $((i/100+1)));
mkdir -p $d;
mv "$f" $d;
let i++;
done
答案2
使用具有范围和偏移量的数组移动固定数量的文件。
#!/bin/bash
shopt -s nullglob
a=(./src/*)
for ((i=0; i<${#a[@]}; i+=100)); do
printf -v b ./img_%03d $((++n))
mkdir -p $b && mv -t $b "${a[@]:$i:100}"
done
答案3
这将提示您需要多少个目录以及子目录前缀。 ls 命令只是提醒您有多少个文件。
ls -1 | wc -l
read -p 'How Many Directories: ' F;
read -p 'Sub-Directories Prefix: ' S;
PARRENT=${PWD}
# cd $PARRENT
n=0
for i in *
do
if [ $((n+=1)) -gt $F ]; then
n=1
fi
todir=$PARRENT/"$S"_$n
[ -d "$todir" ] || mkdir "$todir"
mv "$i" "$todir"
done