Hoje eu envio um caso de uma conseqüência inesperada de um comando shell em alguns arquivos de áudio que eu não entendo de forma alguma.
Aqui estão os fatos:
-
Meu sistema operacional é o ArchLinux, o gerenciador de janelas é Awesome e o terminal usado é o Konsole.
-
Ter muitos diretórios e arquivos contendo espaços e / ou caracteres específicos como ',{,[,?,!
Eu queria renomeá-los removendo quaisquer espaços e / ou caracteres específicos.
-
Procurando por um comando shell, descobri que este substitui (por exemplo) o caractere _
por .
:
$ find ./ -tipo f -exec sed -i -e /_/./g '{} \;
- Eu usei este comando em muitos diretórios nos quais todos os arquivos foram renomeados como esperado, fiquei feliz com isso.
Mas
- Tendo alguns diretórios contendo alguns arquivos de áudio que eu queria renomear, apliquei esse comando bash nesses diretórios. Ao contrário dos usos anteriores, o processo demorou mais e, no final, o resultado não foi esperado. Primeiro, a maioria dos arquivos não foi renomeada. Segundo, todos os arquivos de áudio (mp3, flac, ...) foram alterados / corrompidos e não são mais identificados por nenhum leitor de arquivos de áudio. Por contraste, os arquivos de áudio nos quais eu não usei o comando bash estão sempre certos e podem ser lidos.
Por exemplo, quando tento ler um dos arquivos alterados com o smplayer, a mensagem de erro é: MPlayer / mpv terminou inesperadamente. Código de saída: 2. O arquivo de log adiciona: 'Falha ao reconhecer formato de arquivo'.
Referindo-se à primeira resposta, dou abaixo informações adicionais sobre os efeitos da alteração.
Ter usado 3 comandos para conseguir o que eu queria:
-
encontre ./ -tipo f -exec sed -i -e /_/./g '{} \;
-
encontre ./ -tipo f -exec sed -i -e / /./g '{} \;
-
encontre ./ -tipo f -exec sed -i -e /.././ g '{} \;
Aqui estão alguns exemplos de nomes de arquivos antes de > depois da corrupção:
1 _-_ Bob_The_Sponge _-_ Viver sob o Sea.flac > 1 .-. Bob.The.Sponge.-. Living.under the Sea.flac (note que alguns espaços ainda estão presentes)
2 _-_ Bob_The_Sponge _-_ Nemo_my_friend.mp3 > 2 .-. Bob_The.Sponge .-. Nemo my.friend.mp3 (note que um '_' não foi removido e um espaço foi adicionado no nome).
Todos os casos não podem ser reproduzidos aqui, alguns nomes de arquivos foram bem alterados, outros parcialmente, outros são como antes.
O peso dos arquivos alterados não mudou, nem os direitos desses arquivos. Apenas a data da última modificação foi alterada.
Naturalmente, gostaria de entender o que aconteceu. Eu tentei encontrar explicações com navegadores diferentes, mas não encontrei nenhum problema semelhante ou próximo.
Então, minhas perguntas são:
- Por que esse comando bash parece ter alterado esses arquivos de áudio?
- Por que esse comando tem efeito nesse tipo de arquivo e não nos outros?
- Qual poderia ser a solução para reverter os danos desse comando nesses arquivos?