Recuperando-se de um apocalipse acidental de descompactação

Então, você baixou uma biblioteca que deseja usar. Digamos que ele estava hospedado no Codeplex e o git estava quebrado como de costume. Apenas para um exemplo, diremos que foi a biblioteca C ++ REST de plataforma cruzada da Microsoft (bastante boa), Casablanca .

Sim, isso é baseado em uma história verdadeira. Cerca de dez minutos atrás.

Portanto, o acesso ao git está bloqueado, mas você pode obter um zip da fonte mais recente. Sem perder o ritmo, você cdpara ~/srcou onde quer que você gosta de manter essas coisas, e unzip ~/Downloads/casablanca-averylonghash.zip.

Você observa ansiosamente enquanto os arquivos ganham vida.

Um prompt selvagem aparece:

Overwrite readme.txt [nYANh]?

… ou algo semelhante. Você bateu y, se perguntando por que há um readme.txt para sobrescrever. Arquivos compactados por … ou melhor, descompactados por … e então você faz uma pausa.

ls

Porra.

O zip não tinha um diretório de nível superior, os diretórios de origem de casablanca estão todos misturados com seus outros diretórios de biblioteca.

Não entre em pânico. Bash é seu amigo.

Você ainda quer a biblioteca de Casablanca de qualquer maneira, então a coloca em seu lugar:

$ mkdir casablanca
$ cd casablanca

$ unzip
~/Downloads/casablanca-longhash.zip

Ok, agora você tem os arquivos, devidamente contidos. E você pode usar isso para limpar a bagunça que acabou de fazer. Depois de cdvoltar para ~/src, faça o seguinte:

for i in `ls casablanca`
do
rm
-rf $i
done

É brutal e inseguro, mas se você apenas sobrescrever nomes de arquivo conflitantes, não é como se você os recebesse de volta.

Já fui mordido por arquivos mal estruturados (nunca confie em um zip!) Muitas vezes e esqueci como poderia ter corrigido facilmente o suficiente naquelas vezes, achei que merecia uma postagem. Espero que ajude alguém.

Ah, e Codeplex é terrível. Eu realmente espero que a Microsoft migre todos os seus projetos de código aberto para o Github, eles estão definitivamente no processo.