• # IFS=$'\n'

    Posté par . En réponse au message Robot d'exploration de répertoires. Évalué à 2.

    Ça ne marche pas, parce que bash utilise par défaut les espaces pour séparer les arguments.

    Du coup, dès que tu manipules des fichiers dont le nom possède des espaces, ça fout la caille. Et d'ailleurs, un tel script devrait toujours prévoir ce cas de figure.

    On peut changer le comportement du shell en modifiant la valeur de la variable IFS (Input Field Separator)

    La ligne de commande shell qui correspond à ce que tu voulais est:

    IFS=$'\n' && for dir in `ls -d */`; do cd $dir && du -sh && cd ..; done && unset IFS

    Pour des scripts remplissant des tâches administratifs, ça a plus de sens de nos jours (à mon humble avis) de les écrire en python. C'est simple à écrire, lisible, facile à maintenir, et on s'affranchit de beaucoup de côtés obscur du shell, dont celui-ci.