Linuxを使用しているときに、スペースを含まないファイル名でのみ機能するユーティリティやアプリに出くわす場合があります。この「スペースなし」形式でファイルを保存する必要はなく、ファイル名のスペースを完全に削除する回避策を探す必要がある場合があります。このように、ファイル名にはスペースが含まれず、すべてのアプリケーションで簡単に操作できます。
この記事では、Ubuntuコマンドラインを使用してファイル名からスペースを削除する2つの方法について説明します。
この記事に記載されているコマンドと手順をUbuntu18.04LTSシステムで実行しました。
方法1:「for」ループのmvコマンドを使用
この方法では、すべてのスペースが削除されるようにディレクトリ内のすべてのファイル/フォルダの名前を変更するために、forループでUbuntumvコマンドを使用します。
アプリケーションランチャー検索またはCtrl+Alt + Tショートカットを使用して、Ubuntuコマンドラインであるターミナルを開きます。
サンプルフォルダ内のファイルは次のようになります。 lsコマンドを使用して内容を一覧表示しました:
したがって、すべてのファイル名には、それぞれ1つではなく、2つのスペースが含まれます。
これは、ファイルの名前を変更するディレクトリで使用するコマンドです:
*の古い名前の$ for oldname in *; do newname=`echo $oldname | sed -e 's/ //g'`; mv "$oldname" "$newname";
完了
ディレクトリの内容をもう一度リストすると、すべてのファイル名にスペースが含まれていないことがわかります。
方法2:bashスクリプトを使用してファイルの名前を変更する
この方法では、mvコマンドを使用するbashスクリプトを使用して、すべてのスペースが削除されるようにファイル名とフォルダー名の名前を変更します。
ターミナルアプリケーションを開き、次のようにbinフォルダに移動します。
$ cd ~bin
次に、お気に入りのテキストエディタの1つで新しいスクリプトファイルを開きます。 remove_spaces.sh
という名前の空のスクリプトファイルを開くために、Nanoエディターを使用します。$ sudo nano remove_spaces.sh
その空のファイルに、次のスクリプトを追加します。
#!/bin/bash ( IFS=$'\n' for y in $(ls $1) do mv $1/`echo $y | sed 's/ /\\ /g'` $1/`echo "$y" | sed 's/ /_/g'` done )
ヒント: スクリプト全体をbashファイルに入力する代わりに、ここからスクリプトをコピーして、Ctrl + Shift + Vを使用するか、右クリックメニューの[貼り付け]オプションを使用して、ターミナルに貼り付けることができます。
ファイルは次のようになります。
ここで、Ctrl + Xショートカットを使用してファイルを終了し、「変更されたバッファを保存しますか?」にファイルを保存します。 Yと入力し、Enterキーを押してプロンプトを表示します。
このファイルを実行可能スクリプトにするには、ターミナルで次のコマンドを実行します。
$ sudo chmod +x remove_spaces.sh
これで、任意のフォルダでスクリプトを使用する準備が整いました。
Downloadsフォルダーの「sample」ディレクトリでスクリプトを実行すると、ファイル名のすべてのスペースが削除されているのがわかります。 lsコマンドを使用してファイルの内容を再度一覧表示すると、結果を確認できます。
したがって、これらは、ファイルの名前を変更して、名前のすべてのスペースを削除する2つの方法でした。これで、使用しているアプリケーションがスペースを含むファイル名を認識できなくなります。