Comment écrire un script pour exécuter les files dans plusieurs directorys?
Le problème est le suivant: j'ai plusieurs directorys, et chacun a un file de données à lire et parsingr par un script python (par exemple, a.py
). Je ne veux pas "cd" à chacun des directorys et tapez "a.py". Les sorties sont enregistrées dans chaque directory.
find
va travailler la magie pour vous.
find -name datafile.dat -execdir ~/a.py '{}' \;
La search effectue une search récursive dans tous les sous-directorys pour les files qui correspondent à un set de règles et effectue une action sur eux.
La règle -name vous permettra de find des files avec un nom qui correspond à ce que vous lui donnez. Vous pouvez utiliser le "globbing", par exemple, "* .dat" findait tous les files .dat.
Si nécessaire, vous pouvez utiliser -regex au lieu de -name pour correspondre à un motif regex au lieu d'un model glob, vous pouvez donc faire ". * \. Dat $" pour tous les files .dat.
Le -execdir exécutera n'importe quelle command que vous lui donnerez à partir du directory du file trouvé, en remplaçant "{}" par le file trouvé.
Vous pouvez probablement utiliser une boucle for
:
for i in first_dir second_dir third_dir; do pushd $i a.py popd done
Il fonctionnera pushd $i; a.py; popd
pushd $i; a.py; popd
pushd $i; a.py; popd
avec $i
mis à first_dir
, puis à nouveau avec $i
comme second_dir
, et finalement $i
comme third_dir
. pushd
passe au directory donné, et popd
revient à l'endroit où vous étiez