スペースをエスケープします。 Spring\ 2011
、または引用符を使用します。 'Spring 2011'
.将来的には、*NIX でスペースを含むファイル名を使用することは、通常はお勧めできません。
rename
を持っている場合 、これを使用できます:
rename ' ' '_' [filenames...]
お使いのマシンに名前変更コマンドがある場合、現在の作業ディレクトリ内のすべてのファイル/ディレクトリ内のすべてのスペースがアンダースコアに変更されます:
rename 's/ /_/g' *
rename
がない場合 またはシェルのみを使用することを好む:
for f in *\ *; do mv "$f" "${f// /_}"; done
内訳:
*\ *
for
の入力として、名前にスペースが含まれるすべてのファイルを選択します ループ。パターン*X*
X
のすべてのファイルを選択します それらの名前と特殊文字スペースについては、スラッシュでエスケープして、bash が異なる引数を分離するものとして処理しないようにする必要があります。"$f"
前後の引用符 ファイル名にスペースがあることがわかっているため、重要です。そうしないと、mv
への 2 つ以上の引数として表示されます。 .${f//str/new_str}
bash 固有の文字列置換機能です。str
のすべてのインスタンスnew_str
に置き換えられます .