0

从这个网站和互联网上,我一直在寻找这个答案,但找不到具体的答案。我对Linux的了解不是很多,但是我的问题是:我想转换一个8字符文件名的JPG文件。所以从 2014-12-12 23.59.59.jpg 到 484140b7.jpg (十六进制)。我想出了或找到了这段代码:

ddate=$(exiv2 "${i}"|grep timestamp|cut -c 24-37|tr -d " :")
cp "$i" "${ddate}.jpg"

我在这里和那里看到你可以使用类似 printf "%x\n" 的东西,但我无法让它工作。

有人可以帮我吗?

已经非常感谢了!

4

1 回答 1

1

也许是这样的:

for x in *.jpg; do
    f=$(sed "s/[^0-9]//g" <<< "$x")
    cp "$x" "$(printf "%x.jpg" "$f")"
done

如果您想首先从日期前面删除年份,您可以cut尝试使用 a :

for x in *.jpg; do
    f=$(sed -e "s/[^0-9]//g" -e "s/^....//" <<< "$x")
    cp "$x" "$(printf "%x.jpg" "$f")"
done
于 2014-01-07T21:45:36.890 回答