将十六进制文件名转换为十进制

问题描述 投票:0回答:1

我有几个以十六进制格式命名的文件。我想将它们批量重命名为十进制等值,将它们从

  1. 0x000f750d.wav
  2. 0x000f750e.wav
  3. 0x000f750f.wav

  1. 1013005.wav
  2. 1013006.wav
  3. 1013007.wav

我尝试了以下命令以获取十进制文件名并重命名它们,但我不确定如何进行。 (注意:在执行此命令之前,我从文件中删除了 .wav 扩展名,以便稍后阅读它们以方便自己。)

for f in *; do
    mv -- "$(($f))" $f;
done

这是结果:

mv: cannot stat '1013005': No such file or directory
mv: cannot stat '1013006': No such file or directory
mv: cannot stat '1013007': No such file or directory
mv: cannot stat '0': No such file or directory
linux bash shell hex decimal
1个回答
1
投票

你基本上已经明白了,但论证顺序错误。这应该可行,并删除

$((...))
的扩展名,然后将其添加回来:

for f in *; do mv -- "$f" "$((${f/%.wav})).wav"; done
© www.soinside.com 2019 - 2024. All rights reserved.