É simples Não suporto quando as pessoas usam espaços ao nomear arquivos. Às vezes, destrói os comandos do console e torna a saída de ls feia.
O desafio é escrever um programa (apenas caracteres ascii) que
- renomeia todos os arquivos (incluindo diretórios) no diretório atual para versões com espaços removidos ou substituídos por '_'
- em caso de colisão, é necessário anexar um identificador exclusivo (até você)
- desce recursivamente em todos os subdiretórios
Você pode assumir nomes de caminho no estilo UNIX. Quem precisaria desse programa em uma máquina Windows?
Isso é código de golfe, o programa mais curto vence (caracteres #ascii). Como eu odeio tanto os espaços, cada espaço deve ser contado duas vezes.
Forneça seu idioma, pontuação, programa e uma breve descrição de como executá-lo.
O programa deve compilar e executar com um esforço razoável na minha máquina Linux.
EDIT: Como Etan solicitou uma estrutura de arquivos para teste, eis o script que atualmente uso para criar uma árvore de arquivos adequada:
#!/bin/bash
rm -r TestDir
touchfiles()
{
touch my_file
touch my__file
touch "my file"
touch "my file"
touch " my_file "
}
mkdir TestDir
cd TestDir
touchfiles
for dir in "Test Sub" Test_Sub "Te stSub" Te_stSub
do
mkdir "$dir"
cd "$dir"
touchfiles
cd ..
done