
一部のファイルの名前を変更する小さなスクリプトを作成しています。実際にはファイルが多すぎます。
問題で最もクールなのは、実際にはファイル名が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
および一部の実装では、ksh
5 バイトではなく 5 バイトなので、マルチバイトロケールで重要な場合があります。
同じシェルの場合、文字数で${#var}
はなく変数のバイト数に拡張されます。
答え3
bashを使用すると強制することができます算術コンテキスト
if (( ${#filename} == 5 )); then
:
fi
答え4
if len(file) >= 5 chars
then ren(file) $_;
end if