ディレクトリ全体でファイル内のホワイトスペースを再帰的に名前変更/置換する
このチュートリアルの目的は、複数のファイルでホワイトスペースを名前変更または置換するさまざまな方法を示すことです。Linuxシステムの一部のツールは、ホワイトスペースを含むファイルに対して正しく動作しない場合があり、そのため一部のユーザーはホワイトスペースをアンダースコアに置き換える動機を持つかもしれません。ホワイトスペースのないファイルを操作する方がはるかに簡単で、毎回ファイル名をエスケープすることを心配する必要がありません。
このチュートリアルでは、Linuxでファイルを再帰的にホワイトスペースの名前変更/置換を行う方法を学びます。これには、個々のファイル、ディレクトリ全体、ディレクトリの内容、およびそのすべてのサブディレクトリの内容の名前変更が含まれます。
このチュートリアルでは、あなたは学びます:
- 個々のファイル内の空白を名前変更/置換する方法
- ディレクトリ内のすべてのファイルのホワイトスペースを名前変更/置換する方法
- すべてのファイルのホワイトスペースを再帰的に名前変更/置換する方法
ディレクトリ内のファイルの空白を再帰的に名前変更/置換する例
以下の例はすべてLinuxのコマンドライン上で行われます。ターミナルを開いて、名前を変更したいファイルが含まれているディレクトリに移動し、以下のコマンドのいくつかを試してみてください。
すべてのファイルの空白をアンダースコアに置き換えるためには、Bashのforループ内で次のコマンドを実行すればよい。このコマンドはサブディレクトリ内のファイルには影響を与えないことに注意してください。
for f in *; do mv "$f" $(echo $f | tr ' ' '_'); done-
個々のファイルから空白を削除し、その代わりにアンダースコアを置き換えるには、次のコマンドを使用できます:
myfile="some file.txt" ; mv "$myfile" $(echo $myfile | tr ' ' '_')ここでは、リネームしたいファイル名を変数
$myfileに割り当てています。これにより、その後のコマンドで変数を2回呼び出すことができます。上記の例ではsome file.txtを取り除き、自分のファイル名をその場所に入れてください。 もし白スペースを完全に削除し、その場所に何も置きたくない場合は、上記の例の
trコマンドでアンダースコアを省略し、-dオプションを使用できます。for f in *; do mv "$f" $(echo $f | tr -d ' '); doneファイル名のすべての空白を再帰的にアンダースコアに置き換えるには、Linuxのfindコマンドを使用できます。このコマンドは、サブディレクトリをすべて横断し、空白を含むすべてのファイルの名前を変更します。この動作は、
-maxdepthオプションを使って変更できます。find . -type f -name "* *" -exec bash -c 'mv "$0" "${0// /_}"' {} \;Linuxシステムに
renameユーティリティがインストールされている場合、すべてのファイルから空白を取り除き、アンダースコアに置き換えるための非常に簡単な構文があります:rename 's/\s/_/g' ./*.*Linuxには通常デフォルトではインストールされませんが、非常にうまく仕事をこなすことができるanoterユーティリティは
mmvです。次のコマンドは、すべての空白を削除し、アンダースコアに置き換えます。mmv '* *' '#1_#2'
複数のファイルをLinuxでリネームする方法に関するチュートリアルにも興味があるかもしれません。そこで、バッチファイルのリネーミングの例や、
renameおよびmmvコマンドのインストール方法を紹介しています。締めくくりの考え
このチュートリアルでは、Linuxシステム上のファイルから空白を削除する方法について説明しました。空白のないファイルは作業が容易で、Linux上のさまざまなツールとの互換性があるため、ファイル名をエスケープすることを常に覚えておく必要がありません。ファイルの名前を変更する必要があるのが数個か数千個かに関わらず、このチュートリアルにあるコマンドを使えば、迅速に名前変更の作業を終えることができます。
