Skript: Sonderzeichen ade – Automatisiertes Bereinigen von Dateinamen

Manchmal müssen wir diverse Dateien und Ordner umbenennen, insbesondere wenn unsere Kunden uns Daten zuarbeiten. Aus diesem Grund teilen wir eines unserer Skripte mit euch, dass wir auch schon an viele unserer Kunden weitergegeben haben. Mit unserem Skript zur Umbenennung von Dateien oder Ordner, das unter Windows, Mac und Linux einwandfrei funktioniert, können Sie viel Zeit sparen.
Intelligente Dateibenennung:
Automatisieren Sie Ihre Dateien mit Leichtigkeit
Das PHP-Skript, das wir Ihnen vorstellen, automatisiert den Prozess des Umbenennens von Dateien und Ordnern, indem es einen sauberen, standardisierten Dateinamen (Slug)
erzeugt. Zunächst können Sie über Parameter wie $dryRun
, $renameFiles
und $renameFolders
steuern, ob das Skript nur simuliert oder
tatsächlich Dateien und Ordner umbenennt, und ob beide Objekttypen berücksichtigt werden sollen.
Mithilfe der Funktion toSlug
werden Sonderzeichen entfernt, alle Buchstaben in Kleinbuchstaben umgewandelt und, falls aktiviert, auch in ein Title-Case-Format
transformiert – wobei das von Ihnen gewählte Trennzeichen, hier der Unterstrich (_
), verwendet wird.
Das Skript durchläuft das aktuelle Verzeichnis, überspringt dabei Systemordner wie .
und ..
sowie die eigene Skriptdatei, und
erstellt für jede Datei bzw. jeden Ordner einen neuen, bereinigten Namen. Anschließend gibt es den ursprünglichen Namen und den neuen Slug aus und benennt die Datei bzw. den
Ordner um, sofern Sie den Trockenlauf ($dryRun
) deaktiviert haben. So ermöglicht Ihnen dieses Skript eine flexible und sichere Anpassung Ihrer Dateinamen – ideal
für eine konsistente und übersichtliche Dateiverwaltung über verschiedene Betriebssysteme hinweg.
Folgende Parameter können Sie vor der Ausführung beliebig anpassen:
- dryRun: Gibt die neuen Dateinamen aus, ändert aber noch nichts.
- renameFiles: Sollen Dateien umbenannt werden?
- renameFolders: Sollen Ordner umbenannt werden?
- titleCase: Das_Ist_Title_Case - Soll so umbenannt werden?
- separator: Trennzeichen, z.B. Bindestrich, Unterstrich oder Leerzeichen denkbar
<?php
$dryRun = true;
$renameFiles = true;
$renameFolders = true;
$titleCase = true; // Title-Case-Word-Is
$separator = '_'; // '-' or '_' or ' '
function toSlug($slug) {
global $titleCase, $separator;
$slug = strtolower(trim(preg_replace('~[^0-9a-z]+~i', $separator, html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($slug, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-'));
if ($titleCase): ucwords($slug, $separator); endif;
return $slug;
}
$files = scandir(".");
foreach ($files as $file):
if (in_array($file, ['.', '..', '.DS_Store'])): continue; endif;
if (basename(__FILE__) === $file): continue; endif;
if (!$renameFiles && is_file($file)): continue; endif;
if (!$renameFolders && is_dir($file)): continue; endif;
$slug = toSlug($file);
echo "$file -> $slug" . PHP_EOL;
if (!$dryRun): rename($file, $slug); endif;
endforeach;
Wie führen Sie das Skript aus?
So führen Sie das Skript aus: Kopieren Sie den gesamten Code in eine Datei namens rename.php
und passen Sie die Parameter wie $dryRun
,
$renameFiles
, $renameFolders
, $titleCase
und den gewünschten Trennzeichen-Charakter an Ihre individuellen Bedürfnisse an.
Anschließend öffnen Sie das Terminal (bei Windows die Eingabeaufforderung oder PowerShell) und navigieren in das Verzeichnis, in dem sich Ihre rename.php
befindet. Geben Sie den Befehl php rename.php
ein, um das Skript zu starten. Dieser Vorgang funktioniert problemlos auf Windows, macOS und Linux, da PHP
plattformübergreifend eingesetzt werden kann.
Nutzen Sie zunächst den Dry-Run-Modus, um eine Simulation der Änderungen zu sehen, bevor Sie das Skript ohne diesen Modus erneut ausführen, um die tatsächliche Umbenennung Ihrer Dateien und Ordner vorzunehmen.