如何使用正则表达式从文件路径列表中提取裸文件名

如何使用正则表达式从文件路径列表中提取裸文件名

因此,我的存档管理器似乎在提取 tar.xz 文件时没有保留目录层次结构。现在我的下载文件夹很乱,里面全是错位的文件。

我想删除那些存档中的文件,并且只删除那些文件。为此,我尝试匹配输出中每个文件路径的结尾tar tf file.tar.xz并删除相关文件。

例如如果输入是:

tor-browser_en-US/Browser/firefox
tor-browser_en-US/Browser/firefox.real
tor-browser_en-US/Browser/fonts/
tor-browser_en-US/Browser/fonts/Arimo-Bold.ttf

我想要的输出是:

firefox
firefox.real
Arimo-Bold.ttf

这样我就可以删除它们。

我一直试图实现这一点,sed 's/.*\/([^\/]+)$/\1/'但出现了错误sed: -e expression #1, char 19: invalid reference \1 on 's' command's RHS,我不知道还能尝试什么。

答案1

sed '/\/$/d; s|.*/||'

/\/$/d删除所有以/.结尾的行s|.*/||,删除最后一行/(如果有)和其/本身之前的所有内容。

相关内容