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

9
我正在处理一个bash小代码,但是我卡在了一个小问题上。我有一个字符串,想要用s替换该字符串的最后一个字母。
例如:我正在获取所有以c结尾的文件,并将最后一个c替换为s
for file in *.c; do
   # replace c with s  
   echo $file

有人可以帮我吗?

3个回答

14
for file in *.c; do 
   echo "${file%?}s"
done
在参数替换中,${VAR%PAT}将从变量VAR中删除与PAT匹配的最后字符。 Shell模式*和?可用作通配符。 上述代码删除了最后一个字符,并附加了"s"。

4

使用参数替换。以下完成后缀替换。它将右侧锚定的c替换为一个s实例。

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

0

如果你想要避免循环,请使用rename实用程序。

rename -f 's/\.c$/.s/' *.c

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接