Ich versuche, einen einfachen Cronjob zu schreiben, der die darin verschachtelten Ordner und Dateien rekursiv durchläuft /OneDriveund Datei- oder Ordnernamenzeichen ersetzt, die nicht A-Z, a-z, 0-9oder .durch ein _. (Dies erscheint mir als der einfachste Weg, um Synchronisierungsfehler zu beheben.)
Aufbauend auf diesem StackExchange-Beitrag habe ich es geschafft, den größten Teil des Weges dorthin zu gelangen, indem ich Folgendes verwendet habe:
zmv '**/*' '$f:h${${f:t}//[^A-Za-z0-9]/_}'
Dieser Regex-Ausdruck schließt jedoch ' s nicht. aus, was dazu führt, dass alle Dateierweiterungen in allen meinen Ordnern in _s geändert werden (z. B. file.txtwird file_txt).
Ich bin weit davon entfernt, ein fortgeschrittener Regex-Benutzer zu sein, und alle verschiedenen Permutationen dieses Befehls, die ich verwendet habe, haben Fehler ausgelöst, darunter:
zmv '**/*' '$f:h${${f:t}//[^\.A-Za-z0-9]/_}'
zmv '**/*' '$f:h${${f:t}//[^.A-Za-z0-9]/_}'
zmv '**/*' '$f:h${${f:t}//[^A-Za-z0-9\.]/_}'
Ich bin mir sicher, dass der richtige Regex-Ausdruck offensichtlich ist; Ich fürchte, es ist mir einfach nicht klar.
Wenn jemand hier eine Anleitung geben könnte, zusammen mit einer kurzen Erklärung, warum meine vorherigen Versuche nicht funktionierten, wäre ich dankbar für den kleinen Beitrag zu meinem Verständnis von Regex.
Lösung des Problems
Der :hModifikator hat einen Schrägstrich entfernt; Dies hat es wieder hinzugefügt:
zmv '**/*' '$f:h/${${f:t}//[^\.A-Za-z0-9]/_}'
Ich bin mir nicht sicher, warum das in der ursprünglichen Antwort fehlte, auf die Sie verwiesen haben.
Einige Anmerkungen / Vorbehalte:
- Die
-nOption fürzmvkann beim Aufspüren solcher Probleme sehr hilfreich sein. - ein einzelner Aufruf von
zmvkann möglicherweise nicht sowohl Dateinamen als auch Verzeichnisnamen umbenennen; mehrere Durchgänge könnten erforderlich sein. zmvverwendet Datei-Globing-Muster. Globbing-Muster ähneln regulären Ausdrücken, aber es gibt eine Reihe signifikanter Unterschiede, sodass ein Großteil der Dokumentation für reguläre Ausdrücke hier nicht zutrifft.
Keine Kommentare:
Kommentar veröffentlichen