Bei größeren Projekten will man manchmal wissen, welche Dateien (eines bestimmten Typs) sich im Projektverzeichnis befinden. Dafür gibt es hier je eine schnelle Lösung für Windows und Linux. Natürlich nur mit Bordmitteln.
Für Windows
Die Lösung geht über die Kommandozeile, zumindest ein Mal – man könnte die Befehle auch in einer Batch-Datei ablegen und zukünftig den Ordner, in dem Dateien gelistet werden sollen, auf die .bat ziehen. Die Kommandozeile öffnen wir mit Windows+R
, der Eingabe von cmd
und OK
. Mit dem Befehl cd bewegen wir uns dann zum Pfad des Projektverzeichnisses, z.B. cd C:\Users\Benutzername\Documents\Projekte\test (oder so).
Es gibt allerdings einen einfacheren Weg: Wir rufen mit Windows+E
den Explorer auf und öffnen unser „Projekte“-Verzeichnis – also das Verzeichnis 1 Ebene über dem Verzeichnis, in das wir eigentlich wollen. Dann halten wir die Umschalt-Taste gedrückt und rechtsklicken auf das gewünschte Projektverzeichnis. Im Kontextmenü erscheint dann der neue Eintrag Eingabeaufforderung hier öffnen
. Dann öffnet sich die Kommandozeile gleich dort, wo wir hinwollen.
Auf der Kommandozeile angekommen, zeigt uns der Befehl dir
den Verzeichnisinhalt mit Datum, Uhrzeit, Dateigröße und Dateinamen, sowie die Anzahl der Verzeichnisse und Dateien. Für einen ersten Blick reicht das, aber jetzt kommt die Kür: Mit der Optionen /B
erhalten wir eine einfache Liste von Dateien, 1 Datei pro Zeile. Und weil wir vielleicht nur bestimmte Dateien im Projektordner in unserer Übersicht wollen, können wir einen Filter setzen, z.B. *.txt
für Textdateien, *.docx
für Word-Dateien, etc. Der Befehl in Gänze: dir /B *.pdf
Windows kann zwar mit der dir-Option /S
auch alle Unterverzeichnisse mit in die Suche einbeziehen, gibt dann aber im Gegensatz zu Linux selbst mit der oben genannten Option /B
für jede Datei den kompletten Pfad mit an. Dies verschlechtert die Übersichtlichkeit bei langen Pfaden enorm. Probieren Sie es einfach aus: dir /S /B
Jetzt sind wir soweit, diese Ausgabe für uns nutzbar zu machen. Wir leiten sie nämlich in eine Textdatei um. Das geht ganz einfach, indem man hinter den gewünschten Befehl das „Größer als“-Zeichen setzt, gefolgt vom gewünschten Dateinamen: dir /B *.pdf > pdf-dateiliste.txt
Diese Textdatei enthält dann unsere Dateiliste, die wir weiterverwenden können, z.B. um sie in unser Angebot oder die Rechnung zu kopieren oder um in der Textdatei (oder einer Excel-Tabelle) unsere Arbeitszeit je Datei zu erfassen. Mit den erfassten Zeiten können wir z.B. am Ende prüfen, ob unser effektiver Stundenlohn stimmt, ob wir den Zeilenpreis erhöhen müssen oder ob wir stattdessen Luft für Rabatte haben. Außerdem hilft uns das, Kunden in Zukunft zuverlässiger sagen zu können, wie viel Zeit ein Auftrag von dieser Größe vermutlich benötigen wird.
Wenn wir auch eine Textdatei brauchen, in der die Anzahl der Dateien erfasst ist, können wir diese mit DIR /A-D /B | FIND /C /V ""
für das aktuelle Verzeichnis erfassen und mit DIR /A-D /B /S | FIND /C /V ""
für das derzeitige Verzeichnis plus aller Unterverzeichnisse. Beide Befehle können wie oben mit > dateianzahl.txt
in eine Datei umgeleitet und für später gespeichert werden.
Mehr Tricks für die Kommandozeile finden Sie zum Beispiel hier auf Englisch.
Für Linux
Linuxbenutzer öffnen das Gegenstück zur Windows-Kommandozeile, eine Shell bzw. ein Terminal (z.B. per F12 für Guake), wechseln mit cd ~/projekte/test
ins Projektverzeichnis und lassen sich mit ls
den Inhalt ausgeben.
Damit daraus etwas Vergleichbares wie oben beschrieben wird, benötigen wir zwei Optionen:
-1
(die Zahl 1, nicht der Buchstabe l) listet nur eine Datei pro Zeile auf, anstatt die Ausgabe in mehreren Spalten anzuordnen und -p
markiert Verzeichniseinträge durch einen angehängten /
Schrägstrich.
Vorsicht: Die Optionsbuchstaben sind „case sensitive“, d.h. man muss auf Groß- und Kleinschreibung achten! Dafür muss man unter Linux nicht jede Option einzeln anfügen, sondern kann sie nach einem Minuszeichen zusammenschreiben.
Wie bei Windows können wir am Ende *.xyz
anhängen, um nach bestimmten Dateitypen zu filtern, z.B. *.txt
(Textdateien) oder *.odt
(OpenDocument-Dateien). Das sieht dann so aus: ls -1p *.txt
Weitere interessante Optionen sind -R
, dann arbeitet ls
rekursiv, das heißt, es bezieht die Unterverzeichnisse in die Auflistung mit ein; -B
ignoriert Backup-Dateien (solche, die mit Tilde ~ anfangen).
Leider gibt es keine einfache Option, ls
am Ausgeben von Verzeichnissen zu hindern, ls -p pfad/ | grep -Ev '/'
nutzt das Tool grep
, um den mit der ls
-Option -p
an Verzeichnisse angehängten Schrägstrich zu finden und diese auszufiltern.
Jetzt müssen wir die Ausgabe nur noch, wie bei Windows, in eine Datei umleiten: ls -1pRB *.txt | grep -Ev '/' > ./dateiliste.txt
Die Anzahl der Dateien kann man festhalten, indem man die Ausgabe von ls
mit einer Pipe an wc
übergibt, bevor man sie an eine Datei weiterleitet: ls -p | grep -Ev '/' | wc -l > ./dateianzahl.txt
Mehr Tricks für die Konsole finden Sie zum Beispiel hier auf Englisch.
1 Kommentar bisher