如何将文本文件中的 TEXT 附加到不同文件的文件名的末尾?

如何将文本文件中的 TEXT 附加到不同文件的文件名的末尾?

我已经弄清楚如何从 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

相关内容