Algumas notas:
- O Thunderbird aparentemente não exclui as pesquisas salvas no disco, mesmo depois de excluí-las na interface, por isso minha pasta IMAP do servidor antigo estava cheia de arquivos .msf antigos para as pesquisas que eu não estava mais usando (aproveitei essa oportunidade para não migrar esses)
- Em algum momento, o Thunderbird mudou sua convenção de nomenclatura de arquivos de "Foo% 20Bar.msf" para "Foo Bar.msf", então eu tinha algumas duplicatas (uma desatualizada) sempre que a migração acontecia (provavelmente Thunderbird 2.x - > 3.x?)
- No meu caso, tenho minhas pesquisas salvas na visualização de nível superior, não na Caixa de entrada, para que elas sejam exibidas em ImapMail / servidor / saved-search.msf
- Os arquivos de pesquisa salvos são pequenos, mas contêm referências ao nome do host antigo que preciso encontrar / substituir
- Depois de migrar os arquivos .msf, verificá-los no Thunderbird e sair, virtualFolders.dat foi atualizado (o que explica porque a edição desse arquivo não fez nada e acabou de ser sobrescrita)
Aqui está o comando que eu executei com o Thunderbird não sendo executado para migrar a pesquisa salva .msfs. Desculpas pelo empacotamento ruim:
find ImapMail/oldserver/*.msf -size -5k -and -not -name "*%20*" -and -not -name "Trash.msf" -print0 | xargs -0 perl -e 'foreach $path (@ARGV) { $path =~ /.*\/([^\/]+)/; $filename = $1; print "sed 's/oldserver/newserver/g' \"$path\" > \"ImapMail/newserver/$filename\"\n"; }' | sh
Observe que os argumentos para find
são os mais prováveis de mudar na sua situação; Eu tinha alguns filtros para remover antigas buscas salvas não usadas, mas não excluídas. o filtro em tamanho e ignorar o Trash.msf é necessário apenas porque organizo minhas pesquisas salvas no nível superior com minhas outras pastas não virtuais.
Eu sei que há provavelmente um bajillion de maneiras de fazer esse multifile localizar / substituir e copiar, mas esse método é minha preferência, pois ele lida com nomes de arquivos, e eu posso inspecionar o que está sendo correspondido em cada ponto onde os comandos estão acoplados por um cano.
Você teria que substituir os argumentos do caminho oldserver e newserver na chamada para sed
e nos caminhos de entrada e saída. Observe o regex Perl que efetivamente faz um nome de base.
Espero muito que haja uma maneira de fazer isso em algum momento. Eu percebo que este é um caso especial (buscas salvas associadas a uma única conta movendo para uma conta diferente por hostname com estrutura de pastas idênticas), embora ...