重命名基于符号文件名
我有很多的文件(图片)这样的(文件名只从数字组成):重命名基于符号文件名
123456.jpg
369258.jpg
987123.jpg
...
我需要复印件各一份在其他文件夹(我们将其命名为输出)和重命名每个基于数字在他们的名字的文件,像这样的东西(在伪代码):
outputFileName = String(filename[0]) + String(filename[1]) + String(filename[2]+filename[3]) + ".jpg"
因此,大家可以看到,重命名涉及获得一定的象征文件名,有时会得到文件中一些符号的总和名称。
我需要一个脚本来命名大众所有* .JPG这里我把剧本基于类似的算法的文件夹中,并输出我前面提到的输出文件夹改名的。
这个脚本应该可以通过cygwin shell从macos终端和windows上运行。
我认为主要问题是:如何获得bash变量的特定字符以及如何在bash中执行加法。
要从bash变量中获取char,可以使用以下格式:
${var:START_INDEX:LENGTH}
。执行加法:
$((ARG1 + ARG2))
你生成的脚本可能是这样的:
#!/bin/bash
for f in *.jpg
do
output=${f:0:1}${f:1:1}$((${f:2:1} + ${f:3:1})).jpg
mv -- "$f" "$output"
done
非常感谢! – Astro
您正在寻找substring extraction。
语法是${string:position:length}
,其中string是变量的名称,position是起始位置(0是第一个索引),length是子串的长度。
如问题规定,将创建的文件名,并复制它们名为“输入”到一个命名的文件夹文件夹中的脚本“输出”看起来是这样的:
#!/bin/bash
for file in input/*.jpg
do
filename="$(basename "$file")"
firstChar="${filename:0:1}"
secondChar="${filename:1:1}"
thirdAndFourthChar="$((${filename:2:1} + ${filename:3:1}))"
newfilename="$firstChar$secondChar$thirdAndFourthChar.jpg"
cp "$file" "output/$newfilename"
done
非常感谢! – Astro
即使是*规范*不明确! – devnull
问题必须**表明对正在解决的问题的最小理解**。告诉我们你试图去做什么,为什么它没有工作,以及它应该如何工作。另请参阅:[堆栈溢出问题清单](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) – devnull
你可以请更具体什么仍然不清楚? – Astro