GNU/Linux >> Linux の 問題 >  >> Ubuntu

Linuxシェルでファイル名のスペースをアンダースコアに置き換える方法

Linuxを使用しているときに、スペースを含まないファイル名でのみ機能するユーティリティやアプリに出くわす場合があります。ファイルを常にこの「スペースなし」形式で保存するわけではなく、ファイル名のスペースをアンダースコア文字「_」に置き換える回避策を探す必要がある場合があります。このように、ファイル名にはスペースが含まれず、すべてのアプリケーションで簡単に操作できます。

この記事では、コマンドラインを使用して、ファイル名のすべてのスペースをアンダースコアに変換する2つの方法について説明します。

この記事に記載されているコマンドと手順をUbuntu18.04LTSシステムで実行しました。

この記事のサンプルとして使用するダウンロードフォルダには、すべてのファイル名にスペースが含まれています。

$ ls Downloads

このフォルダを使用して、ファイル名を新しい形式に変換する方法を説明します。

方法1:単一のmvコマンドを使用

この方法では、forループでUbuntu mvコマンドを使用して、特定のディレクトリ内のすべてのファイル/フォルダーの名前を変更し、名前のすべてのスペースをアンダースコア文字に置き換えます。

アプリケーションランチャー検索またはCtrl+Alt + Tショートカットを使用して、Ubuntuコマンドラインであるターミナルを開きます。

使用するコマンドの構文は次のとおりです。

*のファイルの
$ for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done

同じコマンドを実行して、ダウンロードフォルダのスペースをアンダースコアに置き換えました:

ディレクトリの内容をもう一度リストすると、すべてのファイル名にスペースではなくアンダースコアが含まれていることがわかります。

方法2:スクリプトを使用してファイルの名前を変更する

この方法では、mvコマンドを使用するbashスクリプトを使用して、すべてのスペースがアンダースコアに置き換えられるようにファイル名とフォルダー名の名前を変更します。

ターミナルアプリケーションを開き、次のようにbinフォルダに移動します。

$ cd ~bin

次に、お気に入りのテキストエディタの1つで新しいスクリプトファイルを開きます。 replace_spaces.sh

という名前の空のスクリプトファイルを開くために、nanoエディターを使用します。
$ sudo nano replace_spaces.sh

その空のファイルに、次のスクリプトを追加します。

#!/bin/bash

for f in *
do
  new="${f// /_}"
  if [ "$new" != "$f" ]
  then
    if [ -e "$new" ]
    then
      echo not renaming \""$f"\" because \""$new"\" already exists
    else
      echo moving "$f" to "$new"
    mv "$f" "$new"
  fi
fi
done
に移動します。

ヒント: スクリプト全体をbashファイルに入力する代わりに、ここからスクリプトをコピーして、Ctrl + Shift + Vを使用するか、右クリックメニューの[貼り付け]オプションを使用して、ターミナルに貼り付けることができます。

ファイルは次のようになります。

ここで、Ctrl + Xショートカットを使用してファイルを終了し、「変更されたバッファを保存しますか?」にファイルを保存します。 Yと入力し、Enterキーを押してプロンプトを表示します。

このファイルを実行可能スクリプトにするには、ターミナルで次のコマンドを実行します。

$ sudo chmod +x replace_spaces.sh

これで、任意のフォルダでスクリプトを使用する準備が整いました。

サンプルのダウンロードフォルダでスクリプトを実行すると、ファイル名のすべてのスペースが次のようにアンダースコアに変換されます。

したがって、これらは、ファイルの名前を変更して、名前のすべてのスペースをアンダースコアに変換する2つの方法でした。これで、使用しているアプリケーションがスペースを含むファイル名を認識できなくなります。


Ubuntu
  1. Linuxの基本:Wgetを使用してシェルにファイルをダウンロードする方法

  2. Linux でデフォルトのシェルを変更する方法

  3. Linux でデフォルトのシェルを変更する方法

  1. LinuxでCでファイルを書く方法は?

  2. Linuxでjar内のファイルをコマンドラインに置き換える方法は?

  3. Linux シェルを使用してスペースを含むファイルの名前を変更するにはどうすればよいですか?

  1. 例を使用してLinuxでsuコマンドを使用する方法

  2. UbuntuLinuxでtailコマンドを使用する方法

  3. systemctlコマンドを使用してLinuxサービスを管理する方法