回答:
a_file
現在のディレクトリ内の各ファイルの名前a_file
を小文字に変更します。
for a_file in *;do mv -v "$a_file" `echo "$a_file" | tr [:upper:] [:lower:]` ;done;
大文字の場合、引数を逆に [:lower:] [:upper:]
tr
コマンドリファレンスリンク
更新
さらに制御*
をに置き換えることができますls
。
たとえば、*。jpgファイルのみをフィルタリングするために、1.txt、2.txt、3.txt、1.jpg、2.jpg、3.jpgを含むディレクトリls
で使用できます。
for a_file in $(ls *.jpg);do mv -v $a_file `echo $a_file | tr [:upper:] [:lower:]` ;done;
上記のコードは、a_file
拡張子が.jpgのすべてのファイルを変数に割り当てます。
推奨されるsdsに従ってコマンドに追加された-v
オプションを更新します。mv
と呼ばれる、よりエレガントで一般的なユーティリティがありますprename
。
Larry Wallによって書かれてperl
おり、システム上ですでに利用可能になっている可能性が高い/usr/bin/prename
(セットアップの代替がある場合は/usr/bin/rename
、/ etc / alternativesを介してsymlink としても利用可能ですprename
)
それを使用して、perl式(置換s///
またはchar音訳を含むがこれらに限定されない)を提供することにより、1つのコマンドで複数のファイルの名前を変更できますtr///
。
例:
# Lowercase all *.JPG filenames:
prename tr/A-Z/a-z/ *.JPG
# Change any 'No' in a filename to a 'Yes':
prename s/No/Yes/g *No*
# increment first sequence of digits in a filename by 3:
prename 's/([0-9]+)/$1+3/e' *[0-9]*
# If a file contains 'aaa', append '.bak' to its name
prename 'if (/aaa/) {$_ .= ".bak"}' *
等々。
prenameのもう1つの良い点は、ファイルの名前を既存のファイル名に変更する場合に保護されることです。
man prename
詳細については。
mv
、何が行われているかを確認できます。「-f」を渡したくない場合があります。これは既存のファイルを上書きする可能性があるためです