【问题标题】:How to rename photos using information from csv file如何使用 csv 文件中的信息重命名照片
【发布时间】:2023-03-02 21:36:01
【问题描述】:

我是 unix 新手,真的可以使用您的帮助。

我想重命名很多照片,以便它们与图片上的项目代码相对应。我有一个 .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 等。

我希望我的问题很清楚,对于我的知识有限,我深表歉意。
提前致谢!

edit:图像名称前面有目录(带有空格),因为照片位于不同的文件夹中。例如:

./照片排序/Samples1-100/IMG_1134.JPG

【问题讨论】:

  • 您的文件是名为 IMG_1234 还是 IMG_1234.jpg?
  • 它们被命名为.jpg

标签: bash csv unix rename move


【解决方案1】:

这应该做你想做的事。 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

【讨论】:

  • 感谢您的回答。尽管我的图片实际上命名为 IMG_1234.JPG,但您的脚本似乎有效。我只是想知道你能不能再帮我做一件事。我的 csv 文件中的第一列实际上包含了目录(请参阅我的问题的编辑),我无法让它与目录名称中的间距一起使用。提前致谢。
  • 其实没关系;我将用 _ 替换所有空格,这应该可以工作
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 2017-05-31
  • 2014-06-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多