Changer de répertoire en utilisant la boucle dans Linux

Je veux changer de répertoire pour effectuer une tâche dans chaque répertoire. Voici le code:

for i in {1..10} do cd dir/subdir$i bla... bla.. bla.. done 

Cependant je reçois une erreur:

  not found [No such file or directory] 

J’ai essayé ce qui suit mais j’obtiens toujours la même erreur ci-dessus:

 cd $(echo dir/subdir"$i") cd $(eval dir/subdir"$i") 

Le problème est probablement dû au fait que tous les répertoires que vous souhaitez modifier sont relatifs par rapport au répertoire de base d’origine. Une façon de résoudre ce problème consiste à utiliser un sous-shell (...) :

 for i in {1..10}; do ( cd dir/subdir$i || continue cmd1 cmd2 ) done 

Une autre méthode consiste à retourner au répertoire précédent en utilisant cd "$OLDPWD" :

 for i in {1..10}; do cd dir/subdir$i || continue cmd1 cmd2 cd "$OLDPWD" done 

Encore une autre façon d’utiliser pushd et popd :

 for i in {1..10}; do pushd dir/subdir$i || continue cmd1 cmd2 popd done