如何用bash中的另一个字符替换字符串的最后一个字符?

时间:2013-10-03 21:02:27

标签: string bash shell

我正在使用bash中的一个小代码,但我遇到了一个小问题。 我有一个字符串,我想用s替换该字符串的最后一个字母。

例如:我将截取c中的所有文件,并将最后c替换为s

for file in *.c; do
   # replace c with s  
   echo $file

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:14)

for file in *.c; do 
   echo "${file%?}s"
done

在参数替换中,$ {VAR%PAT}将从变量VAR中删除与PAT匹配的最后一个字符。 Shell模式*?可用作通配符。

上面删除了最后一个字符,并附加“s”。

答案 1 :(得分:4)

使用parameter substitution。以下完成后缀替换。它用c替换了一个锚定在右侧的s实例。

for file in *.c; do
   echo "${file/%c/s}"  
done

答案 2 :(得分:0)

如果您想要使用循环

,请使用rename实用程序
rename -f 's/\.c$/.s/' *.c