Bonjour,

Je me retrouve confronté à un problème, et il semble que mon cerveau de moineau est totalement largué. Je sollicite l'aide de personne qui pourrait rallumer ma green lantern ...

L'idée est la suivante :
Pour que ma femme puisse disposer d'une liste des fichiers mis en place sur notre système NAS/SAN (c'est tout un bordel, c'est mon délire mais c'est pas le sujet là), je me suis dit : ya qu'a faire un script en bash avec un ptit ls des dossiers et le tour est joué ... et ba non, parce que tous ses films sont avec des espaces ... du coup, ls apprécie pas du tout, j'ai beau faire pas mal de manipulation, si je veux lister film par film, ls me sort une liste d'un bloc, si je souhaite ajouter des caractères à la suite de chacun des films, ce n'est qu'a la fin du retour de la commande que les caractères sont ajoutés ...

j'avais comme première idée de faire une boucle for et puis de réaliser un test sur chacune des valeurs de $i pour connaître sa nature (dossier, fichier). Mais dû coup, mon plan de génie est sacrément compromis.

Pour le moment, je m'en tiens au strict minimum, je vais simplement lister le contenu du répertoire film et, dans le cas où il y a un sous répertoire, je le liste également, pas plus loin.

Le script ci dessous fonctionne uniquement dans le cas de fichier ne contenant pas d'espace. Hélas ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
for i in `ls`
do
    if [ -d "$i" ]; then
    echo "+$i"
    for j in `ls $i`
       do
       echo " - $j"
       done
    else
    echo "- $i"
    fi
done
Avez-vous une idée pour que cela passe avec des espaces dans les noms de fichiers ? Devrais-je passer par un autre type de langage ?