加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何缩短字符串

发布时间:2020-12-15 22:10:14 所属栏目:安全 来源:网络整理
导读:假设我有以下文件:1.html,2.html和3.html,我想将它们重命名为1.html-bak,2.html-bak和3.html-bak.为此,我运行以下命令: find . -name '*.html' -print0 | xargs -0 -I {} mv {} {}-bak 一切正常,文件按预期重命名. 问题是如何将它们重命名为* .html而不是*
假设我有以下文件:1.html,2.html和3.html,我想将它们重命名为1.html-bak,2.html-bak和3.html-bak.为此,我运行以下命令:

find . -name '*.html' -print0 | xargs -0 -I {} mv {} {}-bak

一切正常,文件按预期重命名.

问题是如何将它们重命名为* .html而不是* .html-bak?

如何从字符串中删除最后4个字符?

解决方法

您可以使用${file% – *}来获取所需的文件名.以下代码循环遍历所有名称以html-bak结尾的文件,并通过删除最后一个破折号后的所有内容来执行重命名:

for file in *html-bak
do
   echo "mv $file ${file%-*}" # <-- using "echo" for safety. Remove once checked
done

${var% – *}从$var的后面删除*的最短匹配.也就是说,从第一个破折号开始移除 – 从右边开始:

$file="1.h-tml-bak"
$echo ${file%-*}
1.h-tml

您当然也可以使用长度来获取除最后4个字符之外的所有内容:

$echo ${file:0:-4}
1.h-tml

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读