LaTeX hat selbst keine Dateisystemoperationen. Man muss also Umwege gehen, um die Dateien eines Verzeichnisses zu ermitteln. Hier einmal ein Beispiel, wie das **unter Linux** unter Linux oder Windows und vermutlich auch MacOS mit Hilfe von [`shellesc`](http://ctan.org/pkg/shellesc) aussehen kann.
\documentclass{article}
\usepackage{ifplatform}
\usepackage{ifthen}
\usepackage{shellesc}
\newcounter{ct}% den brauchen wir später auf jeden Fall
% Aber, erst einmal generiere ich ein paar Dateien lediglich zu Demozwecken.
% Der Teil wird natürlich nur benötigt, wenn man wie ich noch keine Dateien zum Testen hat.
\setcounter{ct}{2010}
\makeatletter
\whiledo{\value{ct}<2016}{%
\@for \dummyfilename:=A,B,C,Doof\do{%
\immediate\openout\@mainaux \arabic{ct}\dummyfilename Haupttermin.tex
\immediate\write\@mainaux{Das ist Datei \arabic{ct}\dummyfilename
Haupttermin.tex.}%
\immediate\closeout\@mainaux
}%
\stepcounter{ct}%
}
\makeatother
% Ab hier braucht man es auch, wenn man bereits echte Testdateien hat.
% Jetzt löschen und initialisieren wir mal eben die temporäre Datei für die Dateiliste.
\makeatletter
\immediate\openout\@mainaux \jobname-files.dat
\immediate\write\@mainaux{Filename}
\immediate\closeout\@mainaux
\makeatother
% Jetzt verwenden wir \write18, um UNTER LINUX die Dateiliste zu erzeugen
\setcounter{ct}{2000}
\whiledo{\value{ct} < 2015}{%
\ifwindows
\ShellEscape{dir /b \arabic{ct}*Haupttermin.tex >>\jobname-files.dat}% wird unter Windows verwendet
\else
\ShellEscape{ls -1 \arabic{ct}*Haupttermin.tex>>\jobname-files.dat}% Linux spezifisch
%\ShellEscape{dir /b \arabic{ct}*Haupttermin.tex >>\jobname-files.dat}% Windows spezifisch
wird auf anderen System verwendet
\fi
\stepcounter{ct}%
}
\usepackage{datatool}
\DTLloaddb{Filenames}{\jobname-files.dat}
\begin{document}
% Jetzt verwenden wir datatool um alle Dateien einzulesen.
\DTLforeach{Filenames}{\filename=Filename}{\InputIfFileExists{\filename}{\par}{}}
\end{document}
Ergibt dann:
![Ausgabe][1]
Dabei wird `\ShellEscape` verwendet, um mit `ls -1` eine Datei zu erzeugen, in der zeilenweise die gefundenen Dateinamen stehen. Diese Datei wird dann mit Hilfe von [`datatool`](http://www.ctan.org/pkg/datatool) verarbeitet und für jeden Eintrag `\InputIfFileExists` aufgerufen. Natürlich kann man in der Schleife auch ganz andere Dinge mit den Dateinamen anfangen.
Damit das ganze funktioniert, müssen *shell escapes* aktiviert sein. Dazu muss man `pdflatex` mit Option `-shell-escape` aufrufen, also ggf. im Editor den Aufruf von `pdflatex` entsprechend um diese Option erweitern.
**Für Windows** muss man natürlich die mit »`Linux spezifisch`« markierte Zeile auskommentieren, indem man ein `%` an den Anfang der Zeile stellt, und die mit »`Windows spezifisch`« markierte, auskommentierte Zeile aktivieren, indem man das `%` am Anfang entfernt.
Achja: `\@mainaux` wird verwendet, um ein *write handle* zu sparen. In der Dokumentpräambel hat LaTeX zwar `\@mainaux` bereit per `\newwrite` angefordert, aber noch nicht verwendet. Also kann ich es einfach mal zweckentfremden, solange ich die damit angelegten und geschriebenen Dateien bis `\begin{document}` auch wieder schließe. Ab `\begin{document}` darf ich es natürlich nicht mehr verwenden, um in eigene Dateien etwas zu schreiben.
[1]: http://texwelt.de/wissen/upfiles/test6_6.png