C'est simple. Je ne peux pas rester debout lorsque des personnes utilisent des espaces pour nommer des fichiers. Cela détruit parfois les commandes de la console et rend la sortie de ls moche.
Le défi consiste à écrire un programme (uniquement des caractères ascii) qui
- renomme tous les fichiers (y compris les répertoires) du répertoire en cours en versions avec espaces supprimés ou remplacés par '_'
- en cas de collision, vous devez ajouter un identifiant unique (à vous de choisir)
- descend de manière récursive dans tous les sous-répertoires
Vous pouvez assumer des chemins d'accès de style UNIX. Qui aurait besoin de ce programme sur une machine Windows de toute façon?
C'est le code golf, le programme le plus court gagne (#ascii caractères). Comme je déteste tellement les espaces, chaque espace doit être compté deux fois.
Veuillez indiquer votre langue, votre score, votre programme et une brève description de son exécution.
Le programme doit compiler et exécuter avec un effort raisonnable sur ma machine Linux.
EDIT: Etan ayant demandé une structure de fichier pour les tests, voici le script que j’utilise actuellement pour créer une arborescence de fichiers appropriée:
#!/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