2013-12-11 27 views
2

使用bash脚本,是否有一种简单的方法来提取从路径中间开始到文件名的子字符串?检索bash脚本中点开始的子字符串

从研究中,我发现这http://tldp.org/LDP/abs/html/string-manipulation.html,但似乎匹配从中间点开始的子串是不可能的。

我有一个bash脚本,用于编目不同备份驱动器上镜像的特定目录和子目录的内容。使用dirname我可以将路径分配给一个变量,但我不想要整个路径。这里是我可能处理的一些路径的示例:

/media/mediaLibrary/movies 
/medis/BackUp-01/movies/any_directory 
/mnt/BackUp-02/movies/any_directory/any_directory 

我想要放弃任何在电影前面的步骤。上述样品将成为:

movies 
movies/any_directory 
movies/any_directory/any_directory 
+1

+1比平均第一后更好。感谢样本数据和预期的输出。继续使用编辑工具来保持可读性。祝你好运! – shellter

+0

感谢您的反馈。 @ anubhava:发布整个脚本是没有必要的。我用你的建议,弄清楚我做错了什么。该脚本现在按设计和预期返回结果。 – dwlamb

回答

1

纯BASH方式:

for s in '/media/mediaLibrary/movies' '/medis/BackUp-01/movies/any_directory' '/mnt/BackUp-02/movies/any_directory/any_directory' 
do 
    echo "${s/*movies/movies}" 
done 
movies 
movies/any_directory 
movies/any_directory/any_directory 
+0

感谢您的快速输入。它在命令行工作,但不在我的脚本中。你能帮我吗?脚本'path = dirname $ file(\ n)path = $ {path/* movies/movies}'。 [后退单引号省略(\ n)表示脚本中的新行]在我的文件中,所有这些都被转出,路径返回为空。 – dwlamb

+0

如果您在问题中发布您的脚本,我一定会为您提供进一步的帮助。 – anubhava

+0

@dwlamb:我在等你的脚本来建议你修复它的方法。 – anubhava