我已经弄清楚如何从 flickr.com 下载多个图像并将标签信息与图像文件一起保存到单独的文本文件中。
例如:
$ ls
2675.jpg
2675.txt
$ cat 2675.txt
_tags_mountains_daylight_oregon
我想将标签信息复制到文件名的末尾。
前:
2675.jpg
后:
2675_tags_mountains_daylight_oregon.jpg
有办法做到这一点吗?我可以将一些东西放入 bash 脚本中吗?
答案1
使用一些 shell 原生工具:
for f in *.jpg
do
mv -- "$f" "${f%.jpg}$(< ${f%.jpg}.txt ).jpg"
done
该$(< ...)
语法要求 bash 读取给定文件的内容。给定的文件是通过去掉尾随.jpg
和附加的.txt
.
答案2
我可以使用以下 bash 脚本来完成此任务:
#!/bin/bash
files='/path/to/files'
for file in "$files/"*.jpg; do
tag=$(grep '_tags_' "${file/.jpg/.txt}")
bname=${file%.jpg}
mv "$file" "${bname}${tag}.jpg"
done
这将循环遍历.jpg
您指定的路径中的所有文件。
tag
_tags_
将 grep 查找文件中.txt
与其正在处理的当前文件同名的字符串.jpg
,并将其设置为整行。
bname
将被设置为其正在处理的当前文件的基本名称(无扩展名)
然后它会将文件重命名为 name/tag.jpg (在示例中也是如此2675_tags_mountains_daylight_oregon.jpg
)