Basta alterar a linha de eco para esta:
echo -ne "\r * $file > $newf "
Os espaços no final limpam a saída antiga da linha.
Minha primeira pergunta sobre este stackexchange, e eu tenho certeza que haverá mais, à medida que eu me aventure no mundo do que é o Linux ...
Eu tenho um loop em um script de shell que renomeia todos os arquivos para uma substring (os últimos n caracteres) de seu nome original.
Será echo
a cada iteração em uma nova linha para eventualmente produzir uma lista de todos os arquivos, mas como manter esse eco em uma única linha / atualização para que não produza essa lista (às vezes grande)?
echo "- Renaming file..."
for file in 'find fldr -type f'
do
newf=$(echo $file | rev | cut -c -6 | rev)
mv -f $file fldr/$newpt
echo " * $file > $newf"
done
saída real ...
- Renaming file...
* file1a.txt > 1a.txt
* file2a.txt > 2a.txt
* file3a.txt > 3a.txt
* ...
saída desejada ...
- Renaming file...
* file3a.txt > 3a.txt
Eu gostaria de ver a única linha sempre mudando para mostrar apenas o arquivo atual.
[BONUS] Como eu poderia mostrar também o n'th arquivo que ele está renomeando?
- 3 files renamed...
* file3a.txt > 3a.txt
Onde n é uma soma / contagem cumulativa dos arquivos renomeados.