Você pode usar ${#VAR}
para obter o comprimento de uma variável $VAR
:
if [ "${#filename}" -eq 5 ]; then
rename_file
fi
Estou fazendo um pequeno script para renomear alguns arquivos. Na verdade, muitos arquivos.
O problema e o legal é que, na verdade, eu só preciso alterar os arquivos que têm um tamanho de nome de arquivo de 5 caracteres.
Eu fiz um $(filename:0:5)
e verifiquei se sobrou alguma coisa, mas acho que é sujo e gostaria de saber a maneira real ou acadêmica de fazer isso.
Algo assim:
if [$(filename).length() == 5]; then
reaname_file
fi
for file in ?????; do
something with "$file"
done
Processará apenas os arquivos (não ocultos) no diretório atual cujo nome consiste em 5 caracteres. Observe que, para alguns shells como dash
e algumas implementações de ksh
, são 5 bytes em vez de 5 caracteres, o que pode ser importante em localidades com vários bytes.
Para esses mesmos shells, ${#var}
expandirá para o número de bytes na variável em vez do número de caracteres.
Com o bash, você pode forçar um Contexto aritmético
if (( ${#filename} == 5 )); then
:
fi
Digamos, "filename.txt" é o arquivo que você pode usar,
file='echo "fileName.txt" | cut -d'.' -f1'
if [ ${#file} -ge 5 ]; then
#you can rename your filename accordingly
fi
if len(file) >= 5 chars
then ren(file) $_;
end if