O script abaixo assume que os números nas palavras ocorrem consecutivamente nos nomes dos arquivos (por exemplo, file_123.dat
, não file12something345.dat
), e os nomes dos arquivos são exclusivos .
O que faz
- Pesquise no arquivo por palavras com números inteiros no nome.
- Ele converterá esses inteiros (consecutivos) em inteiros (reais) "reais", os quais removerão os zeros à esquerda.
- Adicione um ao valor
- Em seguida, compare o tamanho "original" da string numérica com o valor editado, adicionando zeros à esquerda se a string editada for mais curta.
Exemplo:
test999.dat test07.dat test03.dat
aram22.dat test09.dat aram09.dat
test0000013.dat
saídas:
test1000.dat test08.dat test04.dat
aram22.dat test10.dat aram09.dat
test0000014.dat
O script
#!/usr/bin/env python3
import sys
file = open(sys.argv[1]).read()
for w in [w for w in file.split() if w.startswith("test")]:
try:
found = "".join([ch for ch in w if ch.isdigit()])
replace = (len(found), str(int(found)+1))
file = file.replace(w, w.replace(found, replace[1].zfill(replace[0])))
except ValueError:
pass
print(file.strip())
Como usar
- Copie-o em um arquivo vazio, salve-o como
add_one.py
-
Execute-o com o arquivo como um argumento pelo comando:
python3 /path/to/add_one.py '</path/to/file>'