Shell Scripting:将文件字符串转换为可在命令中使用

时间:2016-10-31 01:20:14

标签: string bash shell sed

我一直在找出一种方法来获取文件名的文本并将其转换为可在命令中使用的字符串。

我想获取一个文件名(例如:[foo] bar - foo.mkv)并在空格,方括号和任何其他字符(例如\[foo\]\ bar\ -\ foo.mkv)中添加反斜杠,以便它们可用于命令如mv

感谢您帮助我。

1 个答案:

答案 0 :(得分:4)

我认为不需要这样做。您可以将文件名变量括在双引号中,命令将处理其余部分。

$ touch "[foo] bar - foo.mkv"
$ ls
[foo] bar - foo.mkv
$ mv "[foo] bar - foo.mkv" "abcd"
$ ls
abcd

所以只需将字符串用双引号括起来就必须解决问题:

mv "$oldname" "$newname"

很少需要,但如果您想要替换,可以使用:

$ printf '%q' "[foo] bar - foo.mkv"
\[foo\]\ bar\ -\ foo.mkv