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

Linuxですべてのファイルとディレクトリ名を小文字に変更

前回の記事では、特定のディレクトリ内のファイルとサブディレクトリの数をカウントする方法について説明しました。このガイドでは、Linuxですべてのファイルとディレクトリの名前を小文字に変更する方法を説明します。

また読む :Linuxでトップディレクトリとファイル(ディスク容量)を見つける方法

これを実現する方法はいくつかありますが、最も効率的で信頼性の高い2つの方法について説明します。このガイドでは、 Filesという名前のディレクトリを使用しました。 これは次の構造を持っています:

# find Files -depth

1。 find、xargs、および名前変更コマンドを一緒に使用する

renameは、Linuxで一度に複数のファイルの名前を変更するためのシンプルなコマンドラインユーティリティです。これをfindユーティリティと一緒に使用すると、特定のディレクトリ内のすべてのファイルまたはサブディレクトリの名前を次のように小文字に変更できます。

$ find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

上記のコマンドで使用されるオプションの説明。

  • -深さ –ディレクトリ自体の前に各ディレクトリの内容を一覧表示します。
  • -n 1 xargsに指示します findからコマンドラインごとに最大1つの引数を使用する 出力。

Filesでファイルとサブディレクトリの名前を小文字に変更した後の出力例 ディレクトリ。

以下で説明するように、スクリプトでfindコマンドとmvコマンドを使用する別の方法。

2。シェルスクリプトでのfindおよびmvコマンドの使用

最初にスクリプトを作成します(好きな名前を付けることができます):

$ cd ~/bin
$ vi rename-files.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

echo
echo
#list directories and file new names in lowercase
echo "Directories and files with new names in lowercase letters"
find $(echo $1 | tr 'A-Z' 'a-z') -depth

exit 0

ファイルを保存して閉じ、スクリプトを実行可能にして実行します。

$ chmod +x rename-files.sh
$ rename-files.sh Files     #Specify Directory Name

以下の関連記事もお読みください。

  1. 「すべてはファイルである」とLinuxのファイルの種類の説明
  2. fswatch –Linuxでのファイルとディレクトリの変更または変更を監視します
  3. Fasd –ファイルとディレクトリへのクイックアクセスを提供するコマンドラインツール
  4. FSlint –Linuxで重複ファイルを見つけて削除する方法

このガイドでは、Linuxですべてのファイルとディレクトリの名前を小文字に変更する方法について説明しました。エラーが発生した場合は、以下のフィードバックフォームからご連絡ください。同じことを行う他の方法も提供できます。


Linux
  1. プロのようにLinuxでファイルとディレクトリを探す

  2. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  3. すべての[ファイル名].mp4を検索し、[ファイル名] .audioの名前を変更しますか?

  1. 名前でファイルとディレクトリを削除します。そのようなファイル、又はディレクトリはありません?

  2. Linuxは、ディレクトリに関連するすべてのシンボリックリンクを見つけて削除しますか?

  3. 検索を使用して特定のディレクトリを検索し、1つのディレクトリを除くその中のすべてのファイルを削除しますか?

  1. Linux ですべてのスパース ファイルを見つける方法

  2. Linuxで特定の親ディレクトリを持つすべてのファイルを見つける方法は?

  3. ディレクトリおよびサブディレクトリ内のすべてのゼロバイト ファイルを検索する