Mesclando pastas com praticamente o mesmo nome, mas com letras diferentes

Mesclando pastas com praticamente o mesmo nome, mas com letras diferentes

Ao pesquisar nas configurações avançadas do Dropbox, perdi uma pasta. Só descobri isso cerca de um mês depois. Consegui recuperar esta pasta do Dropbox, mas a estrutura de arquivos das subpastas mudou drasticamente. A pasta atual agora contém duas versões de cada subpasta original. Atualmente está assim:

folder
  /folder1
    /folder11
      /folder111
      /Folder111
       /file1111
       /file1112
       /file1113
    /Folder11
      /file111
      /file112
    /folder12
    /Folder12
  /folder2
  /folder3  

Portanto, tenho subpastas em minúsculas e subpastas BumpyCase. As subpastas minúsculas contêm subpastas e as subpastas BumpyCase contêm arquivos. As subsubpastas novamente contêm uma versão em minúsculas e uma versão BumpyCase de suas respectivas subpastas. E essa história se estende por vários níveis de profundidade.

Felizmente não há duplicação de arquivos, apenas de pastas (mesmas letras, mas maiúsculas e minúsculas diferentes). Portanto, em cada nível, preciso mesclar pastas que diferem apenas na caixa dos nomes. E para fazer isso corretamente eu preciso começar no nível mais profundo e trabalhar até a pasta de nível superior.

Quero que tudo vá para os diretórios do CamelCase.

A partição onde estão os dados é uma partição Ext4. Tenho acesso a várias partições NTFS.

Existe um comando/ferramenta útil do Linux ou alguém com uma idéia de um script que possa fazer isso? Já estou muito feliz por ter recuperado minhas coisas, mas a estrutura atual é um grande transtorno.

Responder1

Eu tive o mesmo problema e encontrei uma solução prática.

Basta acessar sua conta do Dropbox e renomear suas pastas raiz com nomes em letras minúsculas e baixá-las novamente!

Eu leioem outro lugarque o Dropbox tem problemas com pastas e insensibilidade a maiúsculas e minúsculas. Não tenho certeza se ter nomes de pastas em letras maiúsculas foi o único problema. Tive outros problemas que podem afetar o sistema de arquivos do Dropbox além das pastas com letras maiúsculas, como compartilhar as pastas de um Mac e tentar baixá-las em uma máquina Ubuntu. Mas o problema que encontrei foi semelhante ao relatado aqui. Todas as pastas foram vistas corretamente no servidor web, mas quando baixadas todas as pastas começando com letras maiúsculas foram duplicadas e algum conteúdo foi para as pastas com letras maiúsculas e algum conteúdo para as pastas com letras minúsculas, então eu estava procurando uma maneira de mesclar essas pastas.

Responder2

Todos os comandos começam no diretório de nível superior e assumem que você não possui novas linhas nos nomes dos arquivos. Presumo ferramentas GNU (Linux ou Cygwin). Atenção, tudo isso é código não testado, digitado diretamente no navegador.

É bastante fácil mesclar todos os diretórios em letras minúsculas. Uma abordagem é recorrer a todos os diretórios e mesclá-los em suas contrapartes em letras minúsculas. Faça primeiro a profundidade do percurso para que, ao mesclar dois diretórios, seu conteúdo já esteja normalizado.

find . -depth -name '*[[:upper:]]*' -type d -execdir sh -c '
  source=$0
  target=$(echo "$source" | tr "[:upper:]" "[:lower:]")
  if [ "$source" != "$target" ]; then  # need to rename or merge
    if [ -d "$target" ]; then
      # merge $source (mixed- or uppercase) into $target (lowercase)
      find "$source" -mindepth 1 -maxdepth 1 -exec mv -bt "$target" {} +
      rmdir "$source"
    else
      mv "$source" "$target"
    fi
  fi
' {} \;

Se você deseja mesclar de letras minúsculas para maiúsculas e minúsculas, você precisa determinar o diretório de letras minúsculas correspondente a cada diretório em letras minúsculas. O trecho a seguir escolhe um diretório arbitrário com maiúsculas e minúsculas, se houver mais de um.

find . -depth ! -name '*[[:upper:]]*' -type d -execdir sh -c '
  source=$0
  target=$(find . -maxdepth 1 -iname "$source" -not -name "$source" -print -quit)
  if [ -n "$target" ]; then …
  fi
' {} \;

informação relacionada