Tente isto:
for file in file{18..31}.txt
Ela é conhecida como "expressão de seqüência" e faz parte da expansão de chaves
O recurso de incremento é novo no Bash 4. Você provavelmente tem o Bash 3.x.
No Bash 4, você pode fazer:
$ for i in {1..6..2}; do echo $i; done
1
3
5
Mas no Bash 3, você precisa fazer isso para obter os mesmos resultados:
$ for ((i=1; i<=6; i+=2)); do echo $i; done
A mesma forma incrementando em um:
$ for ((i=1; i<=6; i++)); do echo $i; done
Qualquer um dos números pode ser variáveis ou expressões. No entanto, em uma expressão de seqüência, os números devem ser constantes
Aqui está um exemplo usando esse formulário em seus arquivos:
for ((i=18; i<=31; i++))
do
echo "file${i}.txt"
done
Outro novo recurso de expressões de seqüência no Bash 4 é a capacidade de incluir zeros à esquerda. Isso é útil se você deseja criar (e usar) arquivos numerados que podem ser classificados adequadamente.
No Bash 4:
touch file{001..010}.txt
criaria arquivos com o nome "file001.txt" através de "file010.txt". Seus nomes serão classificados na ordem esperada. Sem os zeros à esquerda, "file10.txt" seria classificado antes de "file1.txt".
Para trabalhar com os arquivos, você pode usar a mesma sintaxe zero inicial:
for file in file{001..010}.txt; do echo "$file"; done
No Bash 3, se você precisar de zeros iniciais, precisará preencher o valor por si mesmo:
for i in {1..10}
do
printf -v i '%03d' $i
echo "file${i}.txt"
done
A instrução printf
prefixará o valor de i com zeros à esquerda, de forma que a largura seja 3, por exemplo ("4" se torna "004").
Editar:
A acomodação de espaços em nomes de arquivos é direta:
$ touch "space name "{008..018..3}" more spaces"
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces
$ for f in "space name "{008..018..3}" more spaces"; do mv "$f" "${f}.txt"; done
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces.txt