2016-10-31 5 views
0

ファイル名のテキストを取得し、コマンドで使用できる文字列に変換する方法を考え出すのに苦労しています。シェルスクリプト:コマンドで使用できるようにファイル文字列を変換する

私は(例えば: [foo] bar - foo.mkv)ファイル名を利用したいと思い

彼らは次のようなコマンドmvで使用可能になるよう、スペース、角括弧、および(例えば、\[foo\]\ bar\ -\ foo.mkv用)他の文字にバックスラッシュを追加します。

ご協力いただきありがとうございます。

+2

あなたはこれをする必要はありません。ファイル名は100%そのまま使用できます。そうしないと特定の目的を持っていない限り、すべてのシェル変数を引用するのと同じように、 。 –

答えて

4

私はそれが必要だとは思わない。 filename変数は二重引用符で囲むことができ、コマンドは残りの部分を処理します。

$ 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 
関連する問題