2017-03-16 56 views
0

我是unix的新手,可以真正使用你的幫助。如何使用csv文件中的信息重命名照片

我想重命名很多照片,以便它們與圖片上的項目代碼一致。我有一個.csv文件,其中包含原始的.jpg名稱,然後是我要將照片重命名爲的代碼,後面是連續的列。例如:

IMG_1234.JPG,AB001,AB003,AB004
IMG_1345.JPG,AB011,AB012,AB013,AB014,AB015
IMG_1456.JPG,AB112
IMG_1678.JPG,AB125,AB126

所以我想IMG_1234.JPG複製3次,並更名爲AB001,AB003和AB004等

我知道我需要一個腳本,我也可以複製和重命名文件,但我想不通了解如何使腳本運行通過csv文件,並複製&重命名.JPG的名字下面,直到一個空單元格,然後移動到下一行並複製&重命名.JPG等等等等

我希望我的問題是清楚的,我道歉我有限的知識。
在此先感謝!

編輯:由於照片位於不同的文件夾中,圖像名稱前面有目錄(包含空格)。例如:

./Photos整理/ Samples1-100/IMG_1134.JPG

+0

您的文件名爲IMG_1234或IMG_1234.jpg? – Cyrus

+0

他們被命名爲.jpg – Dasha

回答

0

這應該做你想要什麼。 csv文件的文件名作爲腳本的參數給出。您可以調整複製命令中的路徑,當前所有內容都必須位於同一個目錄中。如果你在mac或者linux上使用它,你也可以使用「ln -s」來代替「cp」來創建一個到原始文件的符號鏈接來節省磁盤空間。

CSVFILE=$1 

    cat $CSVFILE |\ 
    while read LINE; do 
     SPLIT=`echo $LINE | tr "," " "` 
     FIRST=0 
     for NAME in $SPLIT; do 
      if [ $FIRST -eq 0 ]; then 
       SRCNAME=$NAME 
      else 
       DSTNAME=$NAME 
       cp ${SRCNAME}.jpg ${DSTNAME}.jpg 
      fi 
      ((FIRST++)) 
     done 
    done 
+0

謝謝你的回答。儘管我的照片實際上被命名爲IMG_1234.JPG,但您的腳本似乎可行。我只是想知道你能否幫助我做更多的事情。我的csv文件中的第一列實際上包含了目錄(請參閱我的問題的編輯),我無法使它與目錄名稱中的間距一起工作。提前致謝。 – Dasha

+0

實際上沒關係;我將用_替換所有空格,並且應該可以工作 – Dasha