所以我正在创建一个变量,我想在末尾添加一个附加法来回显它,如下所示:
我有一个文件: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( 来保存输出。
文件名来自 glob 扩展。如果要使用 glob 扩展迭代所有文件,可以:
myvariable=Filename*.txt
for f in $myvariable; do echo $f; done
如果你想"禁用"全局扩展,例如通过echo $myvariable
获得文字Filename*.txt
,你可以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"
无论如何,通过阅读您的问题,我不太清楚,您真正想要的是什么。
Yuo可以使用sed
试试这个
file="test.txt"
newext=$(echo "$file" | sed -e "s|txt|zip|g")
echo $newext