2017-03-16 24 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