如何用添加了文本的星号回显变量?

时间:2017-08-16 15:31:00

标签: linux bash variables output echo

所以我正在创建一个变量,我希望通过添加到结尾来回显它,如下所示:

我有一个文件:Filename-08-10-2017.txt

我创建了一个变量:

myvariable=Filename*.txt

当我回应那个变量时:

echo $myvariable

输出Filename-08-10-2017.txt

但我想将名称更改为.zip

所以我想去:

echo $myvariable.zip并输出Filename-08-10-2017.txt.zip

然而它输出:

Filename*.txt.zip

如何按照我想要的方式输出?

感谢。

编辑:

我有点想通了。

我保存了一个新变量$($ myvariable),保存了输出。

2 个答案:

答案 0 :(得分:0)

文件名来自glob扩展。如果要使用glob扩展迭代所有文件,可以:

myvariable=Filename*.txt
for f in $myvariable; do echo $f; done

如果你想"禁用"全球扩张,例如通过Filename*.txt得到里程echo $myvariable,你可以set -f或者只用双引号来包装变量:echo "$myvariable"

要设置文本,您可以执行以下操作:

for f in $myvariable; do echo $f"whatever_like_zip"; done

如果你想做一些文字替换,你可以

for ... echo ${f/%txt/zip} ; done

它会将所有txt文件名更改为zip

此外,如果您想重命名该文件,请将上述echo...更改为

mv "$f" "yourNewNameHere"

无论如何,通过阅读你的问题,我不太清楚,你真正想要的是什么。

答案 1 :(得分:-1)

Yuo可以使用sed

试试这个

file="test.txt"
newext=$(echo "$file" | sed -e "s|txt|zip|g")
echo $newext