如何在shell脚本中修改文件名?

时间:2014-07-14 17:57:53

标签: linux bash shell

我正在编写一个shell脚本来同步到github repo,启动构建,然后获取输出文件,重命名它,并将其移动到Apache可以看到的位置。

这是文件的重命名,我在shell脚本中没有最简单的方法(我几乎没有使用shell脚本的经验 - 我的理解

编译器将创建/var/espbuild/firstpart_1vXX_secondpart.bin

我需要将此文件移至:

/var/www/html/builds/espbuild/firstpart_1vXX_DATE_secondpart_postfix.bin

1vXX是版本号

DATE是日期+%m-%d

的输出

postfix只是一个字符串。

我不确定从哪里开始这样的事情 - 我确信这是一种优雅的方式,因为这是shell脚本的用途,但我对shell脚本一无所知。

提前致谢

2 个答案:

答案 0 :(得分:0)

您可以使用$()

将命令的结果输入变量
DATE=$(date +%m-%d)

然后在新文件名中使用它:

INPUT=/var/espbuild/firstpart_1vXX_secondpart.bin
OUTPUT=/var/www/html/builds/espbuild/firstpart_1vXX_${DATE}_secondpart_postfix.bin
mv ${INPUT} ${OUTPUT}

编辑:要获得版本部分,这是一个简单的例子:

VERSION=$(grep -o 1v.. <<< ${INPUT})

然后OUTPUT应设置为:

OUTPUT=/var/www/html/builds/espbuild/firstpart_${VERSION}_${DATE}_secondpart_postfix.bin

答案 1 :(得分:0)

你可以在BASH中使用它:

f='/var/espbuild/firstpart_1vXX_secondpart.bin'
s="${f##*/}"
s2=${s##*_}
dest="/var/www/html/builds/espbuild/${s%_*}_$(date '+%m-%d')_${s2%.*}_postfix.bin"

echo "$dest"
/var/www/html/builds/espbuild/firstpart_1vXX_07-14_secondpart_postfix.bin

cp "$f" "$dest"