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