Linux Dateien automatisch sortieren mit Python Script
Python-Script, das Dateien in einem bestimmten Ordner (z.B. Downloads) anhand ihrer Endungen in passende Unterordner (wie Bilder, Dokumente, Videos etc.) verschiebt.

Dein Download-Ordner quillt über mit Bildern, PDFs, Videos und Installationsdateien? Es wird Zeit, automatisch Ordnung zu schaffen! Statt manuell zu sortieren, können wir ein einfaches, aber mächtiges Python-Script schreiben, das diese Aufgabe für uns erledigt. Python eignet sich hervorragend für solche Automatisierungsaufgaben unter Linux.
In diesem Tutorial lernst du Schritt für Schritt, wie du ein Python-Script erstellst, das Dateien in einem bestimmten Ordner (z.B. Downloads) anhand ihrer Endungen in passende Unterordner (wie Bilder, Dokumente, Videos etc.) verschiebt.
Voraussetzungen
- Python 3 ist auf deinem Linux-System installiert (prüfe mit
python3 --version
im Terminal). Meistens ist es standardmäßig dabei. - Grundlegendes Verständnis der Kommandozeile.
In 8 Schritte dein Python Skript zur Automatisierung anfertigen
Schritt 1: Planung – Was soll das Script tun?
Unser Ziel: Das Script soll alle Dateien (keine Ordner) im Downloads
-Verzeichnis durchgehen. Anhand der Dateiendung (z.B. .jpg
, .png
, .pdf
, .mp4
) soll es erkennen, um welchen Dateityp es sich handelt, und die Datei in einen entsprechenden Unterordner (Bilder
, Dokumente
, Videos
etc.) innerhalb des Downloads
-Ordners verschieben. Wenn ein Zielordner noch nicht existiert, soll er automatisch erstellt werden.
Schritt 2: Projektordner und Script-Datei anlegen
Öffne dein Terminal und erstelle einen Ordner für unser Projekt und darin die Python-Datei:
mkdir ~/python-organizer
cd ~/python-organizer
touch organize_downloads.py
nano organize_downloads.py # Oder öffne die Datei in deinem Lieblingseditor
Schritt 3: Benötigte Module importieren
Wir brauchen zwei eingebaute Python-Module: os
für die Interaktion mit dem Betriebssystem (Dateien auflisten, Pfade erstellen) und shutil
zum Verschieben von Dateien. Füge am Anfang deiner organize_downloads.py
hinzu:
import os
import shutil
import time # Fügen wir hinzu, um eine kleine Pause einzubauen (optional)
Schritt 4: Quellordner definieren
Wir legen fest, welcher Ordner aufgeräumt werden soll. os.path.expanduser('~')
gibt uns den Pfad zum Home-Verzeichnis des aktuellen Benutzers.
# Quellordner (z.B. Downloads)
source_folder = os.path.expanduser('~/Downloads')
Schritt 5: Zielordner definieren
Wir legen fest, welche Dateiendungen in welche Ordner sollen. Ein Dictionary eignet sich hierfür gut. Wir definieren auch einen Ordner für "Sonstiges".
# Zuordnung von Dateiendungen zu Zielordnern (Namen der Unterordner)
dest_folders = {
# Bilder
'.jpg': 'Bilder', '.jpeg': 'Bilder', '.png': 'Bilder', '.gif': 'Bilder', '.bmp': 'Bilder', '.svg': 'Bilder', '.webp': 'Bilder',
# Dokumente
'.pdf': 'Dokumente', '.doc': 'Dokumente', '.docx': 'Dokumente', '.odt': 'Dokumente', '.txt': 'Dokumente', '.rtf': 'Dokumente',
# Videos
'.mp4': 'Videos', '.avi': 'Videos', '.mov': 'Videos', '.mkv': 'Videos', '.wmv': 'Videos',
# Musik
'.mp3': 'Musik', '.wav': 'Musik', '.ogg': 'Musik', '.flac': 'Musik',
# Archive
'.zip': 'Archive', '.rar': 'Archive', '.tar': 'Archive', '.gz': 'Archive', '.7z': 'Archive',
# Code/Scripts (Beispiele)
'.py': 'Scripts', '.js': 'Scripts', '.sh': 'Scripts', '.html': 'Code', '.css': 'Code',
# ISOs/Images
'.iso': 'ISOs', '.img': 'ISOs',
# Präsentationen
'.ppt': 'Präsentationen', '.pptx': 'Präsentationen', '.odp': 'Präsentationen',
# Tabellen
'.xls': 'Tabellen', '.xlsx': 'Tabellen', '.ods': 'Tabellen', '.csv': 'Tabellen',
}
# Name für den Ordner, wenn keine Zuordnung passt
other_folder_name = 'Sonstiges'
(Passe diese Liste nach deinen Bedürfnissen an!)
Schritt 6: Durch Dateien iterieren und verschieben
Jetzt kommt die Hauptlogik: Wir gehen alle Einträge im Quellordner durch.
print(f"Starte Organisation im Ordner: {source_folder}")
# Gehe durch alle Dateien und Ordner im Quellverzeichnis
for filename in os.listdir(source_folder):
source_path = os.path.join(source_folder, filename)
# Überspringe Ordner, bearbeite nur Dateien
if not os.path.isfile(source_path):
continue
# Finde die Dateiendung (inklusive Punkt, klein geschrieben)
_, file_extension = os.path.splitext(filename)
file_extension = file_extension.lower()
# Finde den Zielordnernamen oder nutze 'Sonstiges'
target_folder_name = dest_folders.get(file_extension, other_folder_name)
target_folder_path = os.path.join(source_folder, target_folder_name)
# Erstelle den Zielordner, falls er nicht existiert
os.makedirs(target_folder_path, exist_ok=True)
# Konstruiere den vollständigen Zielpfad für die Datei
destination_path = os.path.join(target_folder_path, filename)
# Verschiebe die Datei
try:
print(f"Verschiebe '{filename}' nach '{target_folder_name}/'")
shutil.move(source_path, destination_path)
time.sleep(0.1) # Kleine Pause, um die Ausgabe verfolgen zu können (optional)
except Exception as e:
print(f"!! Fehler beim Verschieben von '{filename}': {e}")
print("Organisation abgeschlossen.")
Schritt 7: Das komplette Script
#!/usr/bin/env python3
import os
import shutil
import time
# Quellordner (z.B. Downloads)
source_folder = os.path.expanduser('~/Downloads')
# Zuordnung von Dateiendungen zu Zielordnern (Namen der Unterordner)
dest_folders = {
# Bilder
'.jpg': 'Bilder', '.jpeg': 'Bilder', '.png': 'Bilder', '.gif': 'Bilder', '.bmp': 'Bilder', '.svg': 'Bilder', '.webp': 'Bilder',
# Dokumente
'.pdf': 'Dokumente', '.doc': 'Dokumente', '.docx': 'Dokumente', '.odt': 'Dokumente', '.txt': 'Dokumente', '.rtf': 'Dokumente',
# Videos
'.mp4': 'Videos', '.avi': 'Videos', '.mov': 'Videos', '.mkv': 'Videos', '.wmv': 'Videos',
# Musik
'.mp3': 'Musik', '.wav': 'Musik', '.ogg': 'Musik', '.flac': 'Musik',
# Archive
'.zip': 'Archive', '.rar': 'Archive', '.tar': 'Archive', '.gz': 'Archive', '.7z': 'Archive',
# Code/Scripts (Beispiele)
'.py': 'Scripts', '.js': 'Scripts', '.sh': 'Scripts', '.html': 'Code', '.css': 'Code',
# ISOs/Images
'.iso': 'ISOs', '.img': 'ISOs',
# Präsentationen
'.ppt': 'Präsentationen', '.pptx': 'Präsentationen', '.odp': 'Präsentationen',
# Tabellen
'.xls': 'Tabellen', '.xlsx': 'Tabellen', '.ods': 'Tabellen', '.csv': 'Tabellen',
}
# Name für den Ordner, wenn keine Zuordnung passt
other_folder_name = 'Sonstiges'
print(f"Starte Organisation im Ordner: {source_folder}")
# Gehe durch alle Dateien und Ordner im Quellverzeichnis
for filename in os.listdir(source_folder):
source_path = os.path.join(source_folder, filename)
# Überspringe Ordner, bearbeite nur Dateien
if not os.path.isfile(source_path):
continue
# Finde die Dateiendung (inklusive Punkt, klein geschrieben)
_, file_extension = os.path.splitext(filename)
file_extension = file_extension.lower()
# Finde den Zielordnernamen oder nutze 'Sonstiges'
target_folder_name = dest_folders.get(file_extension, other_folder_name)
target_folder_path = os.path.join(source_folder, target_folder_name)
# Erstelle den Zielordner, falls er nicht existiert
# exist_ok=True verhindert Fehler, wenn Ordner schon da ist
os.makedirs(target_folder_path, exist_ok=True)
# Konstruiere den vollständigen Zielpfad für die Datei
destination_path = os.path.join(target_folder_path, filename)
# Verschiebe die Datei
try:
print(f"Verschiebe '{filename}' nach '{target_folder_name}/'")
shutil.move(source_path, destination_path)
time.sleep(0.1) # Kleine Pause (optional)
except Exception as e:
# Fängt allgemeine Fehler ab, z.B. wenn die Zieldatei schon existiert
print(f"!! Fehler beim Verschieben von '{filename}': {e}")
print("Organisation abgeschlossen.")
Schritt 8: Script ausführen & Testen
- Speichere die Datei
organize_downloads.py
. - Öffne dein Terminal und navigiere in den Projektordner:
cd ~/python-organizer
- WICHTIG: Teste das Script zuerst mit ein paar Beispieldateien in deinem Download-Ordner oder einem Testordner, nicht sofort mit deinem vollen, wichtigen Ordner! Mache ggf. ein Backup.
- Führe das Script aus:
python3 organize_downloads.py
- Beobachte die Ausgabe im Terminal und prüfe, ob die Dateien korrekt in die neu erstellten Unterordner verschoben wurden.
Teile deine Meinung mit der Community
Herzlichen Glückwunsch! Du hast ein Python-Script erstellt, das automatisch Ordnung in deinem Download-Ordner schafft. Dieses Script ist eine gute Grundlage. Du kannst es erweitern, z.B. durch:
- Hinzufügen weiterer Dateitypen.
- Fehlerbehandlung für bereits existierende Dateien im Zielordner.
- Organisation nach Datum (z.B. Unterordner pro Monat/Jahr).
- Protokollierung (Logging) der verschobenen Dateien.
- Erstellung einer grafischen Oberfläche (aufwändiger).
Python ist unglaublich vielseitig für solche Automatisierungsaufgaben unter Linux. Viel Spaß beim Experimentieren!