[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Umbennen von Dateien per Skript schlägt fehl



Am 29.03.2017 um 09:20 schrieb Sascha Reißner:
> Am Donnerstag, den 23.03.2017, 00:00 +0100 schrieb Michelle Konzack:
>> On 2017-03-22 21:50:48 Klaus Becker hacked into the keyboard:
>>> im Ordner habe ich die Unicode-Hyphens händisch in Bindestriche geändert, und 
>>> jetzt klappt z. B. "rename -v 's|^[0-9][0-9]-||' *.mp4" (Tipp von Michelle).
>>> Mein Problem ist jetzt: wie kann ich diese Unicode-Hyphens per Skript in 
>>> Bindestriche verwandeln, damit mein Skript funktionniert?
>> Also ich kann die Dinger auch nicht in xterm oder mc tippen, also oeffne
>> ich in mc mein script, oeffne die Menuse mit F9 und waehle "Format"  und
>> dort "Befehlsausgabe einfuegen".
> Auch nicht mit [AltGr]+[-] ?
> Bei mir funktioniert das.
>

Hallo,

bei mir geht es mit [AltGr] + [-]. Probiere es mal mit dem Bindestrich
neben der rechten Shift-Taste.
Um ausschließlich den Unicode-Hypen zu ersetzen, hab ich ein kleines
Script in Python geschrieben.
Verzeichnisse werden nicht umbenannt. Es wird lediglich das
Unicode-Zeichen '–' durch das ASCII Zeichen '-' ersetzt.
Es wird auch verhindert, dass Dateien einfach überschrieben werden.

https://pastebin.com/Ba44gRyY

#!/usr/bin/env python3

import os
import sys

hypen = b'\xe2\x80\x93'.decode()
dash = '-'

def get_rename_pairs(root):
    results = []
    for root, dirs, files in os.walk(root):
        for file in files:
            if hypen in file:
                source = os.path.join(root, file)
                target = source.replace(hypen, dash)
                if not os.path.exists(target):
                    result = (source, target)
                    results.append(result)
    return results

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print(sys.argv[0], 'top directory')
        sys.exit(1)
    pairs = get_rename_pairs(sys.argv[1])
    for pair in pairs:
        print('Renaming file {} to {}'.format(*pair))
        os.rename(*pair)

Mir persönlich fällt es leichter das mit Python zu realisieren. Sofern
du das Zeichen irgendwie in das Terminal bekommst, kannst du auch rename
nutzen, sofern das Tool mit Unicode umgehen kann. Das weiß ich jetzt nicht.

Schöne Grüße
Andre Müller

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: