名前にスペースを含むファイル名の変更

名前にスペースを含むファイル名の変更

mv理由はわかりませんが、コマンドでこのファイル名を変更した場合not a directory

-bash-4.1# mv {{ THEME SANITIZED }}.hacks.css myomega.hacks.css

答え1

mv "{{ THEME SANITIZED }}.hacks.css" myomega.hacks.css動作します。

答え2

シェル構文として解釈されるのではなく、ファイル名の一部として中括弧とスペースを意味することをシェルに伝える必要があります。

一重引用符の中に特殊文字を含むファイル名を入力できます。これは、単一引用符自体を除くすべての文字に適用されます。これはスクリプトで最も簡単な方法です。

mv '{{ THEME SANITIZED }}.hacks.css' myomega.hacks.css

一重引用符で囲まれた文字列内に一重引用符を使用する必要がある場合は、4文字のシーケンスを使用できます'\''

mv 'It'\'s' wierd' this_is_weird

あるいは、文字の前にバックスラッシュを配置すると、文字の特別な意味が失われます。特別な意味のない文字の前にバックスラッシュを入れることは何の害もありませんが、間違いなく不要な入力です。

mv \{\{\ THEME\ SANITIZED\ \}\}.hacks.css myomega.hacks.css

ファイル名が変数から出た場合は、変数拡張の周囲に二重引用符を使用して特殊文字を保持します(などのデフォルト変数では、mv $source $destination変数値の一部の特殊文字が拡張されます)。

source='{{ THEME SANITIZED }}.hacks.css'
destination=myomega.hacks.css
mv "$source" "$destination"

コマンドラインでこれらのファイル名を入力する最も簡単な方法は、完成に頼ることです。少なくとも最初の文字を入力してからを押す必要がありますTab

mv \{Tab
mv \{\{\ THEME\ SANITIZED\ \}\}.hacks.css 

答え3

二重引用符を使用してスラッシュでエスケープまたはエスケープできます。たとえば、
二重引用符を使用します。

mv "{{ THEME SANITIZED }}.hacks.css" myomega.hacks.css

スラッシュを使用してください:

mv \{\{\ THEME\ SANITIZED\ \}\}.hacks.css myomega.hacks.css

素晴らしい機能もあり、ダッシュで始まるディレクトリを削除したり名前を変更したりする方法がわからない人もいます。ダッシュを使用してください。 :D
例:

mkdir -directory_with_dash
rm -r -- -directory_with_dash

関連情報