Wer regelmäßig Daten auf USB-Sticks verwaltet, kennt das Problem: Man verliert schnell den Überblick über die gespeicherten Dateien, deren Erstellungs- und Änderungsdaten. Eine manuelle Auflistung ist mühsam und fehleranfällig.
Eine einfache Lösung bietet ein kleines Bash-Skript, das automatisch alle Dateien eines USB-Sticks erfasst und die wichtigsten Metadaten in einer CSV-Datei speichert.
Diese lässt sich anschließend bequem in LibreOffice Calc öffnen, formatieren, durchsuchen und weiterverarbeiten.
Einzige Voraussetzung ist Libre Office – das in vielen Distributionen bereits standardmäßig vorinstalliert ist.
I. Skript anlegen
Öffne ein Terminal und füge folgenden Befehl ein:
nano ~/usb_katalog_mit_datum.sh
II. Skript-Inhalt einfügen
Dazu folgenden Skript-Code kopieren und in den Nano-Editor einfügen:
#!/bin/bash
set -e # Bei Fehler abbrechen
echo "--------------------------------------"
echo " USB-Stick Katalogisierer mit Datum (CSV)"
echo "--------------------------------------"
echo "Bitte schließe den USB-Stick an und drücke Enter."
read
lsblk
echo "Gib den Gerätenamen des USB-Sticks an (z.B. sdb1):"
read GERAT
MOUNTPOINT="/mnt/usb"
sudo mkdir -p "$MOUNTPOINT"
if mount | grep "$MOUNTPOINT" > /dev/null; then
echo "Stick ist bereits gemountet."
else
sudo mount /dev/"$GERAT" "$MOUNTPOINT" || { echo "Mounten fehlgeschlagen!"; exit 1; }
fi
echo "Wie soll der Stick in der Tabelle heißen? (z.B. STICK1):"
read STICKNAME
echo "Wie soll die CSV-Datei heißen? (z.B. stick1_liste.csv):"
read LISTENAME
CSVFILE=~/"$LISTENAME"
echo "Stickname;Dateipfad;Dateiname;Erstellungsdatum;Änderungsdatum" > "$CSVFILE"
find "$MOUNTPOINT" -type f | while read -r DATEI; do
DATEINAME=$(basename "$DATEI")
ERSTELLUNG_TS=$(stat -c '%W' "$DATEI")
if [ "$ERSTELLUNG_TS" -le 0 ]; then
ERSTELLUNG_FMT="unbekannt"
else
ERSTELLUNG_FMT=$(date -d "@$ERSTELLUNG_TS" "+%Y-%m-%d %H:%M:%S")
fi
AENDERUNG_TS=$(stat -c '%Y' "$DATEI")
AENDERUNG_FMT=$(date -d "@$AENDERUNG_TS" "+%Y-%m-%d %H:%M:%S")
echo "$STICKNAME;${DATEI};${DATEINAME};${ERSTELLUNG_FMT};${AENDERUNG_FMT}" >> "$CSVFILE"
done
sudo umount "$MOUNTPOINT"
echo "Fertig! Die CSV-Datei findest du unter $CSVFILE"
echo "Öffne die Datei jetzt automatisch in LibreOffice Calc..."
libreoffice --calc "$CSVFILE" &
Auszug aus dem Nano-Editor im Terminal…

Mit [strg+O] speichern, mit [Enter] bestätigen und mit [strg+X] den Nano-Editor beenden.
III. Skript ausführbar machen
Dazu im noch geöffneten Terminal folgenden Befehl einfügen:
chmod +x ~/usb_katalog_mit_datum.sh
IV. Das Skript ausführen
Nun können wir den ersten USB-Stick katalogisieren.
Mit folgenden Befehl wird das Skript aufgerufen:
~/usb_katalog_mit_datum.sh
V. USB-Stick katalogisieren
Wir beginnen mit dem ersten USB-Stick – bitte diesen anschließen – im Dateimanager mounten und [Enter] drücken…

Alle verfügbaren USB-Laufwerke werden aufgelistet – wählen Sie die entsprechende Laufwerksbezeichnung und bestätigen dies mit [Enter]…

Geben Sie Ihr Passwort ein und bestätigen die Eingabe mit [Enter]…

Wie soll der USB-Stick in der Calc-Tabelle heißen? Vergeben Sie eine passende Bezeichnung, im Beispiel übernehmen wir den Vorschlag STICK1

Im nächsten Schritt benennen wir noch die Ausgabe-Liste…

Die Katalogisierung des USB-Sticks startet – das kann je nach Umfang etwas dauern.
Nach Fertigstellung öffnet sich die Import-Zuweisung von Libre Office Calc – übernehmen Sie diese mit Klick auf OK…

VI. Verarbeitung mit Libre Office Calc
Libre Office Calc startet jetzt mit der eben erstellten *.csv-Datei. Diese Liste kann nun mit den komfortablen Funktionen von Calc z.B. nach bestimmten Dateien durchsucht und weiter verarbeitet werden…

Ein weiteres nützliches Beispiel: Musiksammlung auslesen ohne Media Player…

Bei Veränderungen auf dem Datenträger wiederholen Sie das Katalogisieren, überschreiben die erstellte *.csv-Datei oder erstellen – zum Vergleich – eine zusätzliche Liste.
Für einen anderen USB-Stick / Laufwerk verfahren Sie wie vor beschrieben, passen aber die Bezeichnungen entsprechend an.
Die jeweiligen *.csv-Listen werden im home-Verzeichnis abgelegt und können beliebig verschoben werden…

Einen Starter für das Skript im Menü erstellen
Um das Skript angenehm einfach aus dem Menü zu starten, öffnen Sie ein Terminal und geben folgenden Befehl ein:
nano ~/.local/share/applications/usb_katalog_mit_datum.desktop
Folgenden Inhalt einfügen:
[Desktop Entry]
Type=Application
Name=USB-Katalogisierer
Comment=Erstellt eine CSV-Liste vom USB-Stick
Exec=gnome-terminal --hold -e "/home/benutzername/usb_katalog_mit_datum.sh"
Icon=media-removable
Terminal=true
Categories=Utility;
Sieht im Nano-Editor / Terminal dann so aus…

Für den Platzhalter benutzername den tatsächlichen Benutzernamen – korrekt geschrieben – verwenden. Speichern Sie mit [strg+O], bestätigen mit [Enter] und den Nano-Editor mit [strg+X] schließen.
Jetzt noch vom System ab- und anmelden.
Ein Starter ist nun unter Menü -> Zubehör verfügbar…

Anmerkung
Das Skript wurde etwas erweitert – angeschlossene USB-Sticks werden automatisch erkannt und eingehängt. Das Katalogisieren von USB-Laufwerken ist wie vor beschrieben, ebenso möglich – wählen Sie dazu die entsprechende Bezeichnung.
Fazit
Mit diesem kleinen Bash-Skript lassen sich USB-Sticks unter Linux schnell und komfortabel katalogisieren.
Die CSV-Ausgabe – in Kombination mit Libre Office – ist ideal für Archivierung, Übersicht und Weiterverarbeitung.
Titelbild: Designed by Freepik
17 Reaktionen
Danke! Genial einfach, einfach genial.
Danke für die Rückmeldung.
Könnte auch noch etwas angepasst werden…
Ich bin ein stiller Beobachter hier. Nun möchte ich doch einmal für deine vielen konstruktiven, an der wirklichen Praxis orientierten Beispiele danken. Gibt es vielleicht ein ähnliches Script um HDD/SSD-Platten zu katalogisieren?
Besten Dank für dein Feedback…
Man kann bereits externe Laufwerke (per USB) damit auslesen. Einfach die entsprechende Laufwerk-Bezeichnung bei der Auswahl einfügen. Das kann dann halt je nach Umfang etwas dauern…
Um auch interne LW auslesen / katalogisieren zu können, muss ich das Skript etwas abändern.
Vielleicht schaffe ich es bis morgen… Ansonsten gelegentlich hier vorbeischauen… 🙂
Raffiniert, aber bestimmt komplizierter wäre es, wenn der eingesteckte USB-Stick automatisch erkannt wird und zugleich vorausgewählt wird. Spart dem Nutzer Tipperei.
Mir meldet (Debian/KDE-Plasma) ein aufploppendes Fenster mit dem Angebot „Einhängen und öffnen“ den gerade eingesteckten Stick automatisch.
Den Stick beim Anschließen einfach mounten (lassen) und dann im Skript weiter machen…
Die automatische Erkennung des zuletzt angeschlossenen USB-Stick ließe sich auch einstellen.
Wie du schon schreibst – raffiniert, aber etwas komplizierter und Fehler-anfälliger.
Aber auch das werde ich mal durchspielen. Wenn’s dauerhaft ohne Fehler funktioniert, wird der Beitrag entsprechend ergänzt…
Danke, genau das was ich brauche!
Nachdem ich hier seit Jahren mitlese, habe ich mich mal angemeldet.
cooles Script .. sehr nützlich 🙂
Ist es gewollt, dass der Dateipfad mit dem Dateinamen ausgegeben wird ?
Ich habe es für mich mal wie folgt angepasst:
Nach der while-schleife extrahiere ich den Pfad:
DATEIPFAD=$(dirname „$DATEI“)
.. und beim „wegschreiben“ sieht der echo-Befehl dann so aus:
echo „$STICKNAME;${DATEIPFAD};${DATEINAME};${ERSTELLUNG_FMT};${AENDERUNG_FMT}“
Man könnte den Pfad mit Dateinamen auch in die Liste aufnehmen:
echo „$STICKNAME;${DATEI};${DATEIPFAD};${DATEINAME};${ERSTELLUNG_FMT};${AENDERUNG_FMT}“
Hallo @ascotix,
willkommen auf der Linux-Bibel.
Danke für dein Feedback.
Ja das war gewollt so.
Das Skript kann beliebig erweitert, verändert bzw. angepasst werden…
Grüße
zebolon
Danke. Klasse gemacht. Aber warum nur LibreOffice, es gibt doch noch andere Tabellenkalkulationsprogramme?
Bei Linux-Mint 21.3 wird der USB-Stick automatisch gemountet.
Wie geht es nochmal das ich das Programm ins Menü reinbringe?
Habe auch eine DVD so katalosiert.
Hallo Holger,
Libre Office ist auf nahezu allen Linux Distributionen vorinstalliert – es ist also Praxis-nah…
Du kannst das Skript natürlich auch ohne LO nutzen und eine Anwendung deiner Wahl zum Bearbeiten der Liste verwenden. Am einfachsten, du schließt LO gleich wieder. Die *.csv-Liste wird im home-Bereich abgelegt.
Oder – du kannst im Skript die beiden entsprechenden Zeilen:
echo „Öffne die Datei jetzt automatisch in LibreOffice Calc…“
libreoffice –calc „$CSVFILE“ &
einfach auskommentieren – dann sieht das so aus:
# echo „Öffne die Datei jetzt automatisch in LibreOffice Calc…“
# libreoffice –calc „$CSVFILE“ &
oder einfach löschen…
Bezüglich Eintrag ins Menü – Siehe Nachtrag am Beitragsende…
Hallo zebolon,
bei mir funktioniert der Starter nicht. Es blitzt kurz nur das Fenster auf.
Gruß Holger
Hallo Holger,
ich hab eine Abbildung des Nano-Editors im Terminal im Beitrag an entsprechender Stelle gesetzt.
Der Benutzername muss natürlich der Name sein, mit dem man sich am System anmeldet.
Weitere Voraussetzung: Das Skript muss wie in der Anleitung oben angelegt und mit der nötigen Berechtigung erstellt sein. Scheinbar hat es bei dir ja funktioniert…
Alles nochmal kontrollieren und logout / login…
Hallo zebolon,
bekomme die Fehlermeldung „Es ist kein Programm mit diesem Datentyp verbunden“.
Das Ikon der Fehlermeldung sieht wie ein Wine-Programm aus.
Gruß Holger
Wenn ich ohne ~ den Befehl eingebe gibt es eine Rückmeldung „befehl nicht gefunden“. Bin aber in meinem Homeverzeichnis.
Hallo Holger,
bitte exakt an die Anweisungen im Beitrag halten.
Mit dem Befehl im Terminal:
nano ~/.local/share/applications/usb_katalog_mit_datum.desktop
öffnet sich der Nano-Editor. Hier fügst du folgenden Inhalt ein:
[Desktop Entry]
Type=Application
Name=USB-Katalogisierer
Comment=Erstellt eine CSV-Liste vom USB-Stick
Exec=gnome-terminal --hold -e "/home/benutzername/usb_katalog_mit_datum.sh"
Icon=media-removable
Terminal=true
Categories=Utility;
Für benutzername deinen richtigen Anmeldenamen einfügen.
Speichern mit [strg+O], bestätigen mit [Enter] und den Nano-Editor mit [strg+X] schließen.
Jetzt noch am besten ein Neustart, dann sollte es eigentlich mit dem Starter im Menü funktionieren…
Hallo zebolon,
funktioniert leider nicht . Habe exakt so wie Du in der Anweisung gegeben das gemacht.
Habe es auch mal ohne die “ gemacht. Es klappt nicht. Es blitzt ganz kurz ein Fenster auf.
Vielleicht muss man unter Linux Mint was anderes machen?
Gruß Holger