在 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 个字符组成的(非隐藏)文件。请注意,对于某些 shell(例如 )dash和 的某些实现ksh,它是 5 个字节而不是 5 个字符,这在多字节语言环境中可能很重要。

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

答案3

使用 bash,您可以强制算术上下文

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

答案4

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

相关内容