Je suis en train de travailler sur un script, qui doit effectuer une action dans chaque sous-répertoire d'un dossier spécifique.
Quel est le moyen le plus efficace d'écrire?
Je suis en train de travailler sur un script, qui doit effectuer une action dans chaque sous-répertoire d'un dossier spécifique.
Quel est le moyen le plus efficace d'écrire?
Une version qui évite de créer un sous-processus:
for D in *; do
if [ -d "${D}" ]; then
echo "${D}" # your processing here
fi
done
Ou, si votre action est une commande unique, c'est plus concis:
for D in *; do [ -d "${D}" ] && my_command; done
Ou une version plus concise (merci @enzotib). Notez que dans cette version, chaque valeur de D
auront une barre oblique:
for D in */; do my_command; done
Cela va créer un shell interne est exécuté (ce qui signifie que les valeurs des variables seront perdus lors de l' while
boucle):
find . -type d | while read -r dir
do
something
done
Ce ne sera pas:
while read -r dir
do
something
done < <(find . -type d)
Soit on va travailler si il y a des espaces dans les noms de répertoires.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.