6 bash string brace-expansion syntax
是否可以使用 bash 大括号扩展删除而不是将子字符串添加到文件名中?
考虑以下场景,可以使用以下技术为文件名添加后缀:
mv offlineimap.conf{,.minimal}
Run Code Online (Sandbox Code Playgroud)
它所做的是重命名offlineimap.conf
,offlineimap.conf.minimal
这非常方便,尤其是。用于制作备份文件(例如 swith.bak
扩展名)。
但是也可以从给定的文件名中减去子字符串,如下所示:
mv offlineimap.conf.minimal{,-minimal}
Run Code Online (Sandbox Code Playgroud)
这里我用-
一个假设的特殊字符来减去子串。
我希望第二种技术能够从现有文件的名称中offlineimap.conf
删除.minimal
后缀。
Joh*_*024 14
要使用大括号命令删除后缀,例如.minimal
从文件中删除后缀offlineimap.conf.minimal
,请使用:
mv offlineimap.conf{.minimal,}
Run Code Online (Sandbox Code Playgroud)
这里的想法是大括号扩展使用大括号之间以逗号分隔的字符串列表创建一系列字符串:
$ echo a{b,c}
ab ac
Run Code Online (Sandbox Code Playgroud)
在您第一次使用时,两个字符串中的第一个为空:
$ echo a{,c}
a ac
Run Code Online (Sandbox Code Playgroud)
在所需的解决方案中,我们将其切换为两个字符串中的第二个为空:
$ echo a{b,}
ab a
Run Code Online (Sandbox Code Playgroud)
或者:
$ echo offlineimap.conf{.minimal,}
offlineimap.conf.minimal offlineimap.conf
Run Code Online (Sandbox Code Playgroud)