我需要缩短我正在为NTFS和共享权限工作的报告的文件路径。我尝试删除共享路径中的\\
和驱动器路径中的C:\
,然后用>
替换任何斜杠。我还需要将路径缩短到最后一个文件夹,但要考虑空格和特殊字符。在>
和文件夹名称之间需要一个空格。
因此,例如\\Finance\Accounts & Payroll\Sage
变为>> Sage
。
D:\HR\Personnel\Records\Holidays\2015
变为>>>> 2015
。
答案 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(和其他人)通常也接受/
作为分隔符。并且以上都不考虑..
和\.\
之类的内容。首先规范化路径是一个好主意。