2016-10-31 49 views
0

我一直在想出一種方法來獲取文件名的文本並將其轉換爲可在命令中使用的字符串。Shell腳本:將文件字符串轉換爲可在命令中使用

我想利用一個文件名(例如:[foo] bar - foo.mkv),並添加反斜槓空格,方括號,以及任何其他字符(例如\[foo\]\ bar\ -\ foo.mkv),使得它們在諸如mv命令可用。

謝謝你幫助我。

+2

你不需要這樣做,你的文件名是100%可用的,你只需要在引用它時引用它,就像你應該引用所有的shell變量,除非你有一個特定的目的,因爲不這樣做。 –

回答

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 
相關問題