正则表达式以缩短文件路径

时间:2015-12-15 11:10:20

标签: regex

我需要缩短我正在为NTFS和共享权限工作的报告的文件路径。我尝试删除共享路径中的\\和驱动器路径中的C:\,然后用>替换任何斜杠。我还需要将路径缩短到最后一个文件夹,但要考虑空格和特殊字符。在>和文件夹名称之间需要一个空格。

因此,例如\\Finance\Accounts & Payroll\Sage变为>> Sage

D:\HR\Personnel\Records\Holidays\2015变为>>>> 2015

1 个答案:

答案 0 :(得分:1)

这是一个基于正则表达式的解决方案(至少可以使用示例数据):

echo '\Finance\Accounts & Payroll\Sage
D:\HR\Personnel\Records\Holidays\2015' \
  | perl -pe 's/(^|[^\\]+)\\+/>/g; s/(>*)>/$1 /'

>> Sage
>>>> 2015

(没有指定语言,所以我只是使用了我个人的最爱。但是,大多数正则表达式的实现都应该可行。)

这有点像黑客。另一种方式是(在伪代码中):

parts = split(/\\+/, path)
return ('>' × (parts.size - 2) ) ⌢ ' ' ⌢ parts[-1]

请记住,Windows(和其他人)通常也接受/作为分隔符。并且以上都不考虑..\.\之类的内容。首先规范化路径是一个好主意。