Détails
Exécuter la commande sur tous les fichiers d'un répertoire
Quelqu'un pourrait-il fournir le code permettant de faire ce qui suit ? Supposons qu'il existe un répertoire de fichiers, qui doivent tous être exécutés par un programme. Le programme envoie les résultats à la sortie standard. J'ai besoin d'un script qui aille dans un répertoire, exécute la commande sur chaque fichier et concatène les résultats dans un grand fichier de sortie.
Par exemple, pour exécuter la commande sur un fichier :
$ cmd [option] [filename] > results.out
254
3
Le code bash suivant passera $file à la commande où $file représentera chaque fichier dans /dir.
Exemple
Que dites-vous de ça ?
-maxdepth 1
empêche find de descendre de façon récursive dans les dans les sous-répertoires. (Si vous voulez que de tels répertoires imbriqués soient traités, vous pouvez l'omettre).-type -f
spécifie que seuls les fichiers simples seront traités.-exec cmd option {}
lui indique d'exécutercmd
avec l'option
spécifiée pour chaque fichier trouvé, le nom de fichier étant substitué à{}
.;
indique la fin de la commande.cmd
est redirigée versresults.out
Cependant, si vous vous souciez de l'ordre dans lequel les fichiers sont traités, vous vous feriez mieux d'écrire une boucle. Je pense que
find
traite les fichiers fichiers dans l'ordre des inodes (mais je peux me tromper), ce qui n'est peut-être pas ce que vous voulez.Basé sur l'approche de @Jim Lewis's :
Voici une solution rapide utilisant
find
et aussi le tri des fichiers par leur date de modification :Pour le tri, voir :
http://www.commandlinefu.com/commands/view/5720/find-files-and-list-them-sorted-by-modification-time