O comando for ... in *.bak
procura apenas o diretório atual.
Você deseja usar o comando find
, que pesquisa recursivamente. Este comando localizará todos os arquivos zip começando com um ponto a qualquer profundidade no diretório atual ( .
).
find . -iname '.*.zip'
Remover o ponto inicial é um pouco complicado. O seguinte parece funcionar (mas pode ter casos de borda, caveat emptor).
for f in $(find -iname '.*.zip'); do f2=$(echo $f | sed -re 's/(.*)\/\.(.*)/\//'); echo $f $f2; done
Isso imprimirá todas as operações que ele executaria ( echo $f $f2
), se essa lista parecer correta, altere-a para mv $f $f2
e ela fará as renomeações.