我正在为大学做一项与在Bash中编写脚本有关的任务。
我的部分工作包括使用tar
存档特定文件夹中的某些文件。我还需要生成的tarball不包含文件夹结构。只是存档的文件。
经过一些谷歌搜索,我终于发现了一些对我有用的东西。
tar xvf some.tar --transform 's?.*/??g'
这很好地完成了这项工作。但我无法弄清楚sed表达式's?.*/??g'
在代码中的作用。我试过搜索但找不到任何有用的东西。
有人可以解释一下正则表达式的作用吗?我真的很想了解它。
答案 0 :(得分:3)
这个正则表达式看起来更加复杂,因为它们使用?
作为分隔符。一个相当奇怪的选择。如果您使用更熟悉的分隔符,例如|
,它看起来会更好's|.*/||g'
s
- 进行搜索并替换
g
- 全局(替换找到的所有实例)
.*/
- 匹配任意字符集后跟斜杠
||
- 空(替换为空)
看起来它正在从输出名称中删除文件路径。