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 pesquisas que eu não estava mais usando (aproveitei essa oportunidade para não migrar Essa)
- 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 - & gt; 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 / server / saved-search.msf
- Os arquivos de pesquisa salvos são pequenos, mas contêm referências ao nome do host antigo que preciso localizar / substituir
- Depois de migrar os arquivos .msf, verificá-los no Thunderbird e sair, o virtualFolders.dat foi atualizado (o que explica por que a edição desse arquivo não fez nada e acabou sendo sobrescrita)
Aqui está o comando que eu corri com o Thunderbird não está correndo 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
Note que os argumentos para find
são os mais propensos a mudar em sua situação; Eu tinha alguns filtros para remover antigas pesquisas salvas não usadas, mas não excluídas. o filtro em tamanho e ignorar o Trash.msf só é necessário porque organizo minhas pesquisas salvas no nível superior com minhas outras pastas não virtuais.
Eu percebo que há provavelmente um bajillion de maneiras de fazer esse multifile localizar / substituir e copiar, mas esse método é minha preferência, pois ele manipula o escape de nomes de arquivos e eu posso inspecionar o que está sendo correspondido em cada ponto onde os comandos são acoplados por um pipe .
Você teria que substituir o oldserver e servidor de notícias argumentos caminho 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 ...