Bashでファイル名の長さを決定する方法は?

Bashでファイル名の長さを決定する方法は?

一部のファイルの名前を変更する小さなスクリプトを作成しています。実際にはファイルが多すぎます。

問題で最もクールなのは、実際にはファイル名が5文字の長さのファイルを変更するだけです。

残りの部分があるかどうかを確認するために作成しましたが、かなり汚れているようで、$(filename:0:5)実際の方法や学術的な方法を知りたいです。

このような:

if [$(filename).length() == 5]; then
  reaname_file
fi

答え1

${#VAR}以下を使用して変数の長さを取得できます$VAR

if [ "${#filename}" -eq 5 ]; then
   rename_file
fi

答え2

for file in ?????; do
  something with "$file"
done

現在のディレクトリでは、5文字の名前を持つ(非表示)ファイルのみが処理されます。一部のシェル (たとえば)dashおよび一部の実装では、ksh5 バイトではなく 5 バイトなので、マルチバイトロケールで重要な場合があります。

同じシェルの場合、文字数で${#var}はなく変数のバイト数に拡張されます。

答え3

bashを使用すると強制することができます算術コンテキスト

if (( ${#filename} == 5 )); then
   :
fi

答え4

if len(file) >= 5 chars
   then ren(file) $_;
end if

関連情報