Copie os nomes dos arquivos para outra pasta

0

Eu preciso copiar nomes de arquivos de uma pasta para outra. O conteúdo do arquivo nunca é alterado. Nenhum arquivo é sobrescrito, movido ou copiado. É apenas sobre nomes de arquivos .

Eu tenho uma pasta com arquivos nomeados:

  • Mostrar - S01E01 - Título descritivo.mkv
  • Show - S01E02 - Outro título descritivo? .mkv
  • Show - S01E03 - Outro nome complexo! .mkv
  • ...

Eu tenho uma pasta B com arquivos nomeados:

  • show.s01e01.mkv
  • show.s01e02.mkv
  • show.s01e03.mkv
  • ...

Eu não preciso mais dos arquivos na pasta A, porque os arquivos na pasta B têm uma qualidade melhor. Mas eu não quero renomear manualmente todos os arquivos na pasta B para ter o nome de arquivo adequado, incluindo o título do episódio. Eu gostaria de transferir automaticamente os nomes de arquivos apropriados dos arquivos na pasta A para os arquivos na pasta B. A ordem alfabética é idêntica em ambas as pastas. Portanto, o enésimo arquivo da pasta B corresponde ao enésimo arquivo da pasta A. No final, a pasta B conterá exatamente os mesmos nomes de arquivo da pasta A, mas o conteúdo dos arquivos é diferente, é claro.

Exemplo:

Antes:

Pasta A:

  • Show - S01E01 - Maçãs Verdes.mkv
  • Show - S01E02 - Pêssegos no Sky.mkv

Pasta B:

  • show.s01e01.mkv
  • show.s01e02.mkv

Depois:

Pasta A:

  • Show - S01E01 - Maçãs Verdes.mkv
  • Show - S01E02 - Pêssegos no Sky.mkv

Pasta B:

  • Show - S01E01 - Maçãs Verdes.mkv
  • Show - S01E02 - Pêssegos no Sky.mkv

Como faço isso no Bash? (Ou qualquer outra ferramenta GNU / Linux, KDE OK também)

    
por problemofficer 22.10.2013 / 01:01

2 respostas

0

Para fazer o que você quer, seria necessário algum script. Não está muito envolvido, mas está reinventando a roda um pouco.

O que eu sugiro é a instalação do tvnamer link

Isso usará um banco de dados para renomear consistentemente todas as suas mídias. Se você executar tudo isso, os shows de baixa e alta qualidade terão o mesmo nome, para que você possa copiar os de alta qualidade e os de baixa qualidade com cp .

    
por 22.10.2013 / 01:34
0

Você pode tentar matrizes bash. Eu estou dando uma solução esquelética abaixo.

cd $DIR1
list1=( * )

cd $DIR2
i=0
for f in *
do
  mv $f ${list1[$i]}
  (( i += 1 ))
done

Como você mencionou na pergunta, a suposição é que o número exato de arquivos está em ambos os diretórios e, alfabeticamente, eles estão em ordem. Mais verificação de erros e correspondência de padrões pode ser feita para torná-lo robusto.

list1 é uma matriz com os nomes de arquivos nesse diretório. $ {list1 [0]} é o primeiro elemento na matriz, etc. Não tenho certeza se isso funcionará com nomes de arquivos com espaços em branco, etc.

    
por 22.10.2013 / 06:53