Es simple. No puedo soportar cuando la gente usa espacios al nombrar archivos. A veces destruye los comandos de la consola y hace que la salida de ls sea fea.
El desafío es escribir un programa (solo caracteres ascii) que
- cambia el nombre de todos los archivos (incluidos los directorios) en el directorio actual a versiones con espacios eliminados o reemplazados por '_'
- en caso de colisión, debe agregar un identificador único (depende de usted)
- desciende recursivamente en todos los subdirectorios
Puede asumir nombres de ruta de estilo UNIX. ¿Quién necesitaría este programa en una máquina Windows de todos modos?
Este es el código de golf, el programa más corto gana (#ascii caracteres). Como odio tanto los espacios, cada espacio tiene que contarse dos veces.
Proporcione su idioma, puntaje, programa y una breve descripción de cómo ejecutarlo.
El programa debe compilarse y ejecutarse con un esfuerzo razonable en mi máquina Linux.
EDITAR: como Etan solicitó una estructura de archivos para las pruebas, aquí está el script que utilizo actualmente para crear un árbol de archivos adecuado:
#!/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