Entfernen Sie alle illegalen Zeichen aus allen Dateinamen in einem bestimmten Ordner

10

Ich möchte eine Art Prozess erstellen, mit dem ein Benutzer einen Ordner auswählen und alle Dateien durchlaufen und Schrägstriche, Bindestriche usw. aus den jeweiligen Dateinamen entfernen kann.

Ich programmiere unter Windows, aber dies ist unter OSX etwas überfordert.

Ich habe dies gefunden (Automatisierungsprozess zum Entfernen fehlerhafter Zeichen aus einer einzelnen Zeichenfolge) , benötige jedoch etwas, das iteriert und leicht verwendet und zwischen Benutzern in einem Mac-Netzwerk verteilt werden kann.

Vielen Dank für jede Hilfe

bumble_bee_tuna
quelle
2
Was meinst du mit illegal? Wenn das Dateisystem dies für illegal hält, kann es die Dateien nicht erstellen.
Alan Shutko
@AlanShutko System ist ein relativer Begriff. Mit OSX können Sie Schrägstriche in einen Dateinamen einfügen. Sie leiten Dateien mit anderen Netzwerken über Dropbox und Bitsync hin und her und Dateien mit Schrägstrichen werden nicht synchronisiert. Aus Sicherheitsgründen möchte ich keine A-Z0-9-Zeichen in der Zeichenfolge.
bumble_bee_tuna
Ich denke , diese Antwort für Sie tun würde: superuser.com/questions/399464/...
Alan Shutko
@AlanShutko Auf diese Antwort wird in meiner ursprünglichen Frage verwiesen. Mein Problem dabei ist, dass es sich jeweils um eine Datei handelt und nicht um einen Ordner voller Dateien.
bumble_bee_tuna
Hoppla, ich habe es nicht sorgfältig genug gelesen. Sie können es in eine Automator-Aktion übersetzen, die für einen Ordner funktioniert. Wenn jemand anderes es nicht zuerst tut, werde ich daran arbeiten, nachdem ich mich um andere Dinge gekümmert habe.
Alan Shutko

Antworten:

11

Die einzigen Zeichen, die in Dateinamen in OS X nicht zulässig sind, sind NUL und je nach Kontext entweder ASCII-Schrägstrich oder ASCII-Doppelpunkt. Zeichen, die im Finder als Schrägstriche angezeigt werden, werden als Doppelpunkte in Muscheln angezeigt und umgekehrt.

Sie können jedoch folgende Shell-Befehle verwenden:

for f in *;do mv "$f" "${f//[^0-9A-Za-z.]}";done
find . -type f|while read f;do b=${f##*/};mv "$f" "${f%/*}/${b//[^[:alnum:].]}";done
brew install rename;find . -type f -exec rename 's/[^0-9A-Za-z.\/]/-/g;s/-+/-/g' {} \;
rename -z *

Oder verwenden Sie einfach eine Anwendung wie Name Mangler :

Lri
quelle
1
+1 für Name Mangler. Ernsthaft jeden Cent wert. Wert über den Vergleich hinaus Wert.
Mike Kormendy
+1 auch für Name Mangler. Ausgezeichnet !! Spart den Aufwand beim Umbenennen mit GNU-Konventionen, die auf dem Mac nicht funktionieren (und verbringt Stunden damit, herauszufinden, was
passieren
15

Ich habe dies in eine Anwendung eingewickelt, damit Sie sie problemlos weitergeben können. Es wird nach einem Ordner gefragt und anschließend die Dateinamen bereinigt.

Laden Sie es hier herunter .

Sollte dieser Link jemals ausfallen, können Sie die folgende Anwendung in Automator erstellen:

Alles was du tun musst, ist:

  • Fragen Sie nach Finder-Elementen (Sie sollten nur Ordner zulassen)
  • Legen Sie dieses Ergebnis als Variable fest
  • Führen Sie ein Shell-Skript aus (Sie müssen die Eingabe als Argumente anstatt an stdin übergeben ).

    for f in "$1"/*; do
      dir="$(dirname "$f")"
      file="$(basename "$f")"
      mv -- "$f" "${dir}/${file//[^0-9A-Za-z.]}"
    done
    
slhck
quelle
3
+ Requisiten zum Herunterladen und einfach zu bedienende Anweisungen.
Michael Frank
2
Sie können ${file//[[:cntrl:]\\\/:*?\"<>|]/_}damit alle von Windows verbotenen Zeichen entfernen, um die Interoperabilität zu verbessern. In dieser Antwort finden Sie Informationen zu zusätzlichen Windows-Besonderheiten wie CON / NUL / ... und Dateinamenlängen.
Trikasse