在bash中将文件路径转换为URI


Answers:


5

一种方法是使用urlencode(通过安装在Ubuntu上sudo apt-get install gridsite-clients)。

urlencode -m "$filepath"

会将路径转换为URI。URI的“ file://”部分将被省略,但是您可以通过bash单行代码轻松添加它:

uri=$(urlencode -m "$1"); echo "file://$uri"

或直接

echo "file://$(urlencode -m "$1")"

要么

echo -n file://; urlencode -m "$1"

非常感谢MichaelKjörling提供的参考!


不要忘记引号!您可能想encodeduri=$(urlencode -m "$uri") $uri双引号!
gniourf_gniourf 2012年

@gniourf_gniourf谢谢,相应地修改了代码。
谷氨酰胺

4

您还可以直接从命令行使用Perl模块URI :: file

$ path="/home/MHC/directory with spaces and ümläuts"
$ echo $path | perl -MURI::file -e 'print URI::file->new(<STDIN>)."\n"'
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
$

1
可以缩短到echo $path | perl -MURI::file -E 'say URI::file->new(<>)'Perl 5.10(从2007年开始)或更高版本
DanielBöhmer19年

2

在CentOS上,不需要额外的依赖项:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"

使用pathlib模块可以通过python -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
umi

pathlib仅在Python 3中可用,默认情况下未在CentOS上安装。
Rockallite
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.