MacOS Bash - 如何按顺序标记大量文件并将文件移动到 150 个文件块中的文件夹?

MacOS Bash - How to label a huge collection of files sequentially and move files to folders in blocks of 150 files?

我正在使用这段代码在统一资产商店的统一项目中按顺序重命名我的曲目

ls -v | cat -n | while read n f; do mv -n "$f" "cinematic$n.mp3"; done 

如何将此功能与使用 150 个文件块分隔不同文件夹中的文件的功能相结合?这样做的目的是为了给unity sample pack的文件做相应的标注,不会陷入严重的偏差

期待

kind/warm/best regards/wishes

谢谢你们。两种解决方案都有效。阅读您的回复后,这是我对您的贡献的补充

f=1 d=1 n=150
for file in *.mp3
do
    if [ "$(( f % n ))" -eq 1 ]
    then
        dir=dir$d
        mkdir "$dir"
        echo mkdir "$dir"
        d=$(( d + 1 ))
    fi
    mv -n "$file" "$dir/cinematic$f.mp3"
    echo mv -n "$file" "$dir/cinematic$f.mp3"
    f=$(( f + 1 ))
done

#############################################

a=0
b=0
n=150
files=(*.mp3)

while (( ${#files[@]} > 0 )); do
    dir="./dir$((++a))"
    mkdir -p "$dir"
    echo mkdir -p "$dir"

    for f in "${files[@]:n * a: n}"; do
        mv -nv "$f" "$dir/cinematic$((++b)).mp3"
        echo mv -nv "$f" "$dir/cinematic$((++b)).mp3"
    done
done

我将所有文件读入一个数组:

a=0
b=0
n=150
files=(*.mp3)

while (( ${#files[@]} > 0 )); do
    dir="./dir$((++a))"
    mkdir -p "$dir"

    for f in "${files[@]:0:n}"; do
        mv -nv "$f" "$dir/cinematic$((++b)).mp3"
    done

    files=( "${files[@]:n}" )    
done

谢谢你们。两种解决方案都有效。这是我对您的贡献的补充

f=1 d=1 n=150
for file in *.mp3
do
    if [ "$(( f % n ))" -eq 1 ]
    then
        dir=dir$d
        mkdir "$dir"
        echo mkdir "$dir"
        d=$(( d + 1 ))
    fi
    mv -n "$file" "$dir/cinematic$f.mp3"
    echo mv -n "$file" "$dir/cinematic$f.mp3"
    f=$(( f + 1 ))
done

#############################################

a=0
b=0
n=150
files=(*.mp3)

while (( ${#files[@]} > 0 )); do
    dir="./dir$((++a))"
    mkdir -p "$dir"
    echo mkdir -p "$dir"

    for f in "${files[@]:n * a: n}"; do
        mv -nv "$f" "$dir/cinematic$((++b)).mp3"
        echo mv -nv "$f" "$dir/cinematic$((++b)).mp3"
    done
done