在两个单独的文件夹中连续重命名文件



我有两个文件夹,文件夹A有50个文件,文件夹B有N个文件,我需要做的是这个:使用公共计数器重命名两个文件夹中的所有文件,每次我从文件夹 A 重命名文件时,假设文件夹 B 中的 1、3 个文件将获得连续的计数器号:2、3 和 4,然后返回文件夹 A 并重命名下一个文件 5,直到文件夹 A 上没有文件。

文件夹A 1 5 9 13 17

文件夹B 2 3 4 6 7 8 10 11 12 14 15 16 18 19 20

有什么想法吗?

我认为这段代码可以解决问题。它基于模来递增文件夹 B 编号,如果文件夹 B 中的文件计数超过文件夹 A 文件计数的 3 倍,则为临时停止条件。

  • FolderA 的模式是 1、5、9...,这就像将 i 初始化为 1,每次迭代递增 4。
  • 如果 i 模 4 不是 0,则文件夹 B 的名称递增 1,否则它将递增 2。

如果复制粘贴到文件中(假设 renaming.sh)并假设适当的执行权限($> chmod +x renaming.sh),则可以从命令行像这样使用它:

$> ./renaming.sh folderA folderB

下面是要放入文件的代码:

#!/bin/bash

i=1
ACOUNT=0
for FILEA in $1/*; do
        mv "${FILEA}" "$1/${i}"
        (( i+=4 ))
        ((ACOUNT++))
done
i=1
BCOUNT=0
for FILEB in $2/*; do
        if (( i%4 )) ; then
                ((i++))
        else
                ((i+=2))
        fi
        if ((BCOUNT>= 3* ACOUNT)); then break; fi
        ((BCOUNT++))
        mv "${FILEB}" "$2/${i}"
done

最新更新