No Bash, como se determina o tamanho do nome do arquivo?

5

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
    
por Harrys Kavan 26.09.2013 / 13:35

5 respostas

10

Você pode usar ${#VAR} para obter o comprimento de uma variável $VAR :

if [ "${#filename}" -eq 5 ]; then
   rename_file
fi
    
por 26.09.2013 / 13:45
6
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.

    
por 26.09.2013 / 14:36
4

Com o bash, você pode forçar um Contexto aritmético

if (( ${#filename} == 5 )); then
   :
fi
    
por 26.09.2013 / 14:07
2

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 
    
por 26.09.2013 / 13:53
-1
if len(file) >= 5 chars
   then ren(file) $_;
end if
    
por 26.09.2013 / 21:20

Tags