Linuxを使用しているときに、小文字のファイル名でのみ機能するユーティリティやアプリに出くわす場合があります。通常、この形式でファイルを保存することはなく、フォルダ内のすべてのファイル名を再帰的に小文字に変換する回避策を探す必要がある場合があります。この記事では、コマンドラインを使用して、特定のパス内のすべてのファイルとフォルダ名を小文字に変換する2つの方法を紹介します。
この記事に記載されているコマンドと手順をUbuntu18.04LTSシステムで実行しました。
検索コマンドを使用してフォルダの内容を一覧表示する方法は次のとおりです。
$ find [directory_name] -depth
この記事のサンプルとして使用するダウンロードフォルダには、大文字で始まるすべてのファイルがあり、名前の間にいくつかのファイルも含まれています。
$ find Downloads -depth
方法1:名前変更コマンドを使用する
この方法では、Ubuntuのfind、Xargs、およびrenameコマンドを使用して、特定のディレクトリ内のすべてのファイル/フォルダーの名前を再帰的に変更します。
アプリケーションランチャー検索またはCtrl+Alt + Tショートカットを使用して、Ubuntuコマンドラインであるターミナルを開きます。
使用するコマンドの構文は次のとおりです。
$ find [directory_name] -depth | xargs -n 1 rename -v‘s /(。*)\ /([^ \ /] *)/ $ 1 \ / \ L $ 2 /’{} \;
システムにrenameコマンドがインストールされていない場合、上記のコマンドを実行するとエラーが発生する可能性があります。次のapt-getコマンドを使用してUbuntuにrenameをインストールできます:
$ sudo apt-get install rename
ダウンロードディレクトリでファイル名を小文字に変換するには、次のコマンドを使用します。
$ find Downloads -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
ディレクトリの内容を再度リストすると、次のようにすべてのファイル名が小文字に変換されていることがわかりました。
方法2:スクリプトを使用してファイルの名前を変更する
この方法では、findコマンドとmvコマンドを使用するbashスクリプトを使用して、ディレクトリ名自体を含むディレクトリのファイル名とフォルダ名を再帰的に変更します。
ターミナルアプリケーションを開き、次のようにbinフォルダに移動します。
$ cd ~bin
次に、お気に入りのテキストエディタの1つで新しいスクリプトファイルを開きます。 lowercase_filenames.sh
という名前の空のスクリプトファイルを開くために、nanoエディターを使用します。$ sudo nano lowercase_filenames.sh
その空のファイルに、次のスクリプトを追加します。
#!/bin/bash #print usage if [ -z $1 ];then echo "Usage :$(basename $0) parent-directory" exit 1 fi #process all subdirectories and files in parent directory all="$(find $1 -depth)" for name in ${all}; do #set new name in lower case for files and directories new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')" #check if new name already exists if [ "${name}" != "${new_name}" ]; then [ ! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!" fi done exit 0
ヒント: スクリプト全体をbashファイルに入力する代わりに、ここからスクリプトをコピーして、Ctrl + Shift + Vを使用するか、右クリックメニューの[貼り付け]オプションを使用して、ターミナルに貼り付けることができます。
ファイルは次のようになります。
ここで、Ctrl + Xショートカットを使用してファイルを終了し、「変更されたバッファを保存しますか?」にファイルを保存します。 Yと入力し、Enterキーを押してプロンプトを表示します。
このファイルを実行可能スクリプトにするには、ターミナルで次のコマンドを実行します。
$ sudo chmod +x lowercase_filenames.sh
これで、任意のフォルダでスクリプトを使用する準備が整いました。
ダウンロードフォルダでスクリプトを実行すると、すべてのファイルとサブフォルダの名前が次のように小文字に変換されているのがわかります。
したがって、これらは、ファイル名の名前をすべて小文字に変更して、使用しているアプリケーションが大文字のファイル名を認識できないようにする2つの方法でした。