2014-01-16 17 views
1

我有两个文件夹,folderA有50个文件和folderB,可以说有N个文件,我需要做的是这样的: 用一个公用计数器重命名这两个文件夹中的所有文件,一个来自folderA的文件,比如说1,3个来自folderB的文件将获得连续的计数器编号:2,3和4,然后返回到folderA并用5重命名下一个文件,直到folderA上没有文件。在两个单独的文件夹上连续重命名文件

folderA 1 5 9 13 17

FolderB中2 3 4 6 7 8 10 11 12 14 15 16 18 19 20

任何想法?

+1

这需要一点编程。你知道任何编程语言吗? –

+0

我不是程序员,但是我在C和一些Linux脚本上编写了一些代码,但没有涉及管理不同文件夹上的文件。 – darko

+0

这个解决方案可以用几十种语言完成,所以如果你发布这样的问题,最好给人们一个你想用的语言的概念。这个网站的想法是帮助你学习,所以它应该使用你已经熟悉的技术。 –

回答

0

我认为这段代码会做到这一点。如果文件夹B中的文件数大于folderA文件数的3倍,则它基于模递增folderB数和临时停止条件。

  • FolderA的图案是1,5,9 ...这就好比初始化为1,并通过4每次迭代递增。
  • FolderB中的1个,如果我模4递增的名字不是0否则被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 
+0

非常感谢,先生,我会试试看。 – darko

+0

@darko没问题。如果问题能够解决您的问题,请将您的问题标记为已解决:让其他人更容易找到合适的答案。并告诉我,如果没有,我们会尽力整理出来。 – Quirysse