在 Bash 中如何确定文件名的长度?

Har*_*van 5 bash rename

我正在做一个小脚本来重命名一些文件。其实很多文件。

问题和酷的是,我实际上只需要更改文件名长度为 5 个字符的文件。

我做了一个$(filename:0:5),看看是否有剩余的,但我想这很脏,我很高兴知道这样做的真实或学术方式。

类似的东西:

if [$(filename).length() == 5]; then
  reaname_file
fi
Run Code Online (Sandbox Code Playgroud)

jof*_*fel 11

您可以使用${#VAR}来获取变量的长度$VAR

if [ "${#filename}" -eq 5 ]; then
   rename_file
fi
Run Code Online (Sandbox Code Playgroud)


Sté*_*las 6

for file in ?????; do
  something with "$file"
done
Run Code Online (Sandbox Code Playgroud)

将仅处理当前目录中名称由 5 个字符组成的(非隐藏)文件。请注意,对于某些 shelldash和 的某些实现ksh,它是 5 个字节而不是 5 个字符,这在多字节语言环境中很重要。

对于那些相同的 shell,${#var}将扩展到变量中的字节数而不是字符数。