我是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等等。
我希望我的问题很明确,并为我有限的知识道歉 提前致谢!
编辑:图像名称前面有目录(带空格),因为照片位于不同的文件夹中。例如:
./已分类的照片/ Samples1-100 / IMG_1134.JPG
答案 0 :(得分: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