Je souhaite écrire un script bash qui traite de manière récursive tous les fichiers d'un certain type.bash: traitement (récursif) de tous les fichiers d'un répertoire
Je sais que je peux obtenir la liste des fichiers correspondant en utilisant trouver ainsi:
trouver. -name « * .ext »
Je veux l'utiliser dans un script:
- liste récursive obatin des fichiers avec une extension donnée
- obtenir le chemin complet du fichier
- passer le chemin complet vers un autre script
- Vérifiez le code retour du script. Si ce n'est pas le cas, consignez le nom du fichier qui n'a pas pu être traité.
ROOT_DIR = ~/work/projects cd $ROOT_DIR for f in `find . -name "*.ext"` do #need to lop off leading './' from filename, but I havent worked out how to use #cut yet newname = `echo $f | cut -c 3 filename = "$ROOT_DIR/$newname" retcode = ./some_other_script $filename if $retcode ne 0 logError("Failed to process file: $filename") done
Ceci est ma première tentative d'écriture d'un script bash, alors l'extrait ci-dessus n'est pas susceptible de courir:
Mes premiers (pseudocode) comme celui-ci ressemble tentative. Heureusement, la logique de ce que j'essaie de faire est assez claire, et quelqu'un peut montrer comment joindre les points et convertir le pseudo-code ci-dessus en un script de travail.
Je suis en cours d'exécution sur Ubuntu
Si vous utilisez « trouver $ ROOT_DIR -name "* .exe" 'vous n'aurez pas besoin de jouer avec le' ./ '. –