前回の記事では、特定のディレクトリ内のファイルとサブディレクトリの数をカウントする方法について説明しました。このガイドでは、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
以下の関連記事もお読みください。
- 「すべてはファイルである」とLinuxのファイルの種類の説明
- fswatch –Linuxでのファイルとディレクトリの変更または変更を監視します
- Fasd –ファイルとディレクトリへのクイックアクセスを提供するコマンドラインツール
- FSlint –Linuxで重複ファイルを見つけて削除する方法
このガイドでは、Linuxですべてのファイルとディレクトリの名前を小文字に変更する方法について説明しました。エラーが発生した場合は、以下のフィードバックフォームからご連絡ください。同じことを行う他の方法も提供できます。