./Queen/(1986)/Innuendo/01.One vision.mp3
./Queen/(1986)/Innuendo/02.One vision.mp3
./Queen/(1986)/Innuendo/03.One vision.mp3
我想将上面的行显示为:
01.One vision.mp3
02.One vision.mp3
03.One vision.mp3
我尝试过:
sed -i 's/^[^.$/]/ /g/
答案1
您的主要问题是您尝试将其用作/
分隔符,而/
同时也是您将要解析的字符。
您需要使用不同的分隔符,例如管道。匹配所有内容和 a /
,然后使用\(
and \)
(捕获组)分隔要提取的部分,并使用\1
渲染该组:
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
您可以在没有捕获组的情况下让它工作:只需将所有内容删除到最后/
:
echo "yourstring" | sed 's|.*/||'
答案2
为什么不用basename
于此目的?例如:
for file in *mp3; do basename "$file"; done