2014-01-16 15 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