Bash 大括号扩展删除部分文件名

Bash 大括号扩展删除部分文件名

是否可以使用 bash 大括号扩展删除而不是添加子字符串到文件名?

考虑以下场景,可以使用以下技术向文件名添加后缀:

mv offlineimap.conf{,.minimal}

它的作用是重命名offlineimap.confofflineimap.conf.minimal非常方便的特别是。用于制作备份文件(例如 swith.bak扩展名)。

但是也可以从给定的文件名中减去子字符串,如下所示:

mv offlineimap.conf.minimal{,-minimal}

这里我使用-一个假设的特殊字符来减去子字符串。

我希望第二种技术能够从现有文件的名称中offlineimap.conf删除后缀。.minimal

答案1

要使用大括号命令删除后缀(例如.minimal从文件中删除后缀) offlineimap.conf.minimal,请使用:

mv offlineimap.conf{.minimal,}

更多关于支撑扩展

这里的想法是,大括号扩展使用大括号之间以逗号分隔的字符串列表创建一系列字符串:

$ echo a{b,c}
ab ac

在第一次使用时,两个字符串中的第一个为空:

$ echo a{,c}
a ac

在所需的解决方案中,我们将其切换以使两个字符串中的第二个为空:

$ echo a{b,}
ab a

或者:

$ echo offlineimap.conf{.minimal,}
offlineimap.conf.minimal offlineimap.conf

答案2

作为 John1024 答案的补充(无法评论)。

尝试了这个方法,发现了捷径:

  1. 使用自动完成功能 - 按 Tab 键输入需要剪切的完整文件名。

    offlinei(tab key pressing) -> get full name -> offlineimap.conf.minimal

  2. 输入,}然后向后移动一个单词(Alt + b在 bash 中),然后插入{

我们正在得到需要的建设 offlineimap.conf.{minimal,}

相关内容