Auteur Topic: [HANDLEIDING] Renamen van bestanden met vreemde tekens.  (gelezen 18095 keer)

Offline raptile

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 66
  • -Ontvangen: 131
  • Berichten: 1.263
[HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Gepost op: 05 oktober 2012, 22:38:16 »
Het komt wel eens voor dat er bestanden worden gedownload/geupload met diacrieten er in.
Meestal worden deze vervangen door een vraagteken(?)

Deze bestanden kun je niet meer renamen omdat de ? niet wordt herkend.
Bijvoorbeeld:
Alina Fernández wordt Alina Fern?ndez

Om deze bestanden toch te kunnen hernoemen kun je het volgende doen:

met het commando
ls -ilKun je het inode nummer achterhalen van bestanden. (google op inode als je wilt weten wat het is)
Het commando zal alle bestanden laten zien met daarvoor het inode nummer.

Je zou er een ingewikkeld script kunnen schrijven om dit te renamen maar het kost heel veel meer uur (dat denk ik iig omdat ik niet handig ben met awk e.d.!) om dit script te schrijven dan handmatig de bestanden te renamen.

Het renamen doe je zo:
typ het commando ls -il in en noteer het inode nummer van het bestand wat je wil renamen.

Gebruik vervolgens het commando:
find . -type f -inum "inode nummer hier tussen de haakjes" -exec mv {} "nieuwe bestandsnaam tussen deze haakjes" ; om alsnog een andere naam te kunnen geven aan het bestand.

Succes!
If UNIX isn\'t the solution, you\'ve got the wrong problem...

Is RAID hetzelfde als een backup?

Heeft het antwoord van een gebruiker je geholpen met het oplossen van je probleem?
Geef hem/haar een bedankje door op de bedankt knop te drukken!

Offline Bosui

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 1
  • Berichten: 14
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #1 Gepost op: 23 december 2014, 21:19:46 »
Dat cmd werkt niet bij mij. (zie bijlage)

Is er inmiddels door een handig iemand al een scriptje geschreven die naar bestanden met "verkeerde" tekens zoekt en deze vervangt door een "goed teken" ?
Het maakt me even niet uit welk teken.

Ik ben bezig geweest een paar100 gig te backuppen en in diverse folders heb ik bestanden met speciale tekens staan die de Syn. Nas niet leuk vind.

Ik zie het echt niet zitten om die 10duizenden bestanden door te gaan zoeken om elke file handmatig te gaan renamen.  :(
Je zou verwachten dat dit inmiddels wel opgelost zou zijn, toch ?

DS1815+ met 8x WD30EFRX-68EUZN0
DSM 5.1.5021

Excuus als ik in een verkeerd topic post, maar er zijn er zoveel die over dit probleem gaan dat ik deze er maar uitgepikt heb.
  • Mijn Synology: DS1815+
  • HDD's: 8 * WD30EFRX
  • Extra's: +4GB

Offline janbal

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 30
  • -Ontvangen: 114
  • Berichten: 615
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #2 Gepost op: 23 december 2014, 21:41:09 »
Kijk even in het onderdeel SABnzb, daarin staat het een en ander, o.a. van mijzelf. Ik gebruik SABnzb niet meer maar gebruik nog wel (heel incidenteel) het scriptje CharTranslator.py gekoppeld (als 1-malige opdracht) aan de schedule-module van DSM. Eventueel kun je dat scriptje ook via Putty draaien.  Je kunt zo een zelf te kiezen bereik aan mappen laten scannen en corrigeren. Werkt behoorlijk
  • Mijn Synology: DS220+
  • HDD's: WD Ultrastar DCHC320
Geeft iemand een nuttig antwoord? Gebruik de "Bedankt!" knop.

Offline Goner

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 22
  • -Ontvangen: 134
  • Berichten: 965
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #3 Gepost op: 24 december 2014, 10:54:04 »
Dat cmd werkt niet bij mij. (zie bijlage)
de ; aan het eind v/d regel moet zijn \;
RTFM
NAS : DS212j with1 ST2000DM008 & 1 ST2000DL003 in SHR / DSM 5.2-5967 Update 8
LAN : Devolo 500&550Mbps homeplugs, 2 5-port switches, Maxxter ACT-WNP-RP-002
HW : Raspberry Pi 2B, Nintendo Wii U & Switch
OS : Windows 7

Offline Bosui

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 1
  • Berichten: 14
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #4 Gepost op: 24 december 2014, 17:57:09 »
Ok, thanks. Ben tussen het werk door een los py-script aan het proberen nu.
Sabnzbd kan ik niet installeren via package center. Die staat bij mij niet in de lijst van Syno community.
  • Mijn Synology: DS1815+
  • HDD's: 8 * WD30EFRX
  • Extra's: +4GB

Offline janbal

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 30
  • -Ontvangen: 114
  • Berichten: 615
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #5 Gepost op: 24 december 2014, 18:17:50 »
En kijk anders voor dat scriptje even hier: http://forums.sabnzbd.org/viewtopic.php?f=9&t=10595&sid=f64050ef576bce550546a5a27617d131&start=60#p79752


Als je dat scriptje aanmaakt met een py extensie dan moet je dat kunnen gebruiken. (Als je tenminste ook python hebt draaien).
  • Mijn Synology: DS220+
  • HDD's: WD Ultrastar DCHC320
Geeft iemand een nuttig antwoord? Gebruik de "Bedankt!" knop.

Ben(V)

  • Gast
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #6 Gepost op: 24 december 2014, 19:04:58 »
Je realiseert je toch wel dat die namen er alleen maar vreemd uitzien doordat je met een andere "code page" er naar kijkt dan waarmee ze zijn aangemaakt?

Als ik een bestand heb met diakritische teken die er onder windows normaal uitzien en ik kijk er op de NAS met putty naar of met filestation dan ziet het er ook rar uit.
Allemaal een kwestie van de juiste codepage gebruiken.

Offline Bosui

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 1
  • Berichten: 14
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #7 Gepost op: 26 december 2014, 15:40:03 »
Heya Jan, ik was al een post van je tegengekomen waarin je zei je muziekverzameling "even" geconverteerd te hebben.
Tja, ging het maar zo simpel eh..
Laatste keer dat ik met Linux bezig geweest ben was met Mandrake 9.0, dus dat is al even geleden.
Bovendien is dit mijn eerste echte NAS. Hiervoor had ik een WD Mybook in de meterkast hangen waar alle muziek op stond.
Paar weken terug de Syn. gekocht, en alle muziek van de Mybook naar de Synology gekopieerd.
Probleemloos, dat dacht ik.

Die rare tekens interesseren me niet zo veel Ben, maar ik heb er wel een probleem mee dat bestanden met die tekens niet te verplaatsen zijn, niet te deleten en niet af te spelen !
Bovendien heeft een of ander programma op de Syn. ook een hele berg logfiles gemaakt in de Data map met rare tekens in de naam, maar da's weer een ander probleem.

Ik ben zover dat ik Python3 geinstalleerd heb, hopelijk is dat goed.
Ik heb dat Pyhton script gekopieerd en op m'n synology gezet, maar geen idee waar die heen moet eigenlijk, dus een random folder op volume2.
Sabnzbd kan ik niet downloaden, staat niet in de lijst...ik had ook eigenlijk niet verwacht dat het zó makkelijk zou zijn.

Mgoed, bij dat script op m'n nas zetten gaat het al fout denk ik ;)

En dan nog proberen uit te voeren via Telnet, wat dus niet lukt.
Script niet gevonden ofzo.

Dus hier loop ik vast...meer posts lezen vol programmeertaal en scripts, dit kost echt dagen werk voor mij.

Ik baal best wel een beetje, want ik als nitwit customer verwacht toch dat ik gewoon wat files van een andere HD naar de nas kan zetten zonder een complete linuxcursus te volgen om ze überhaupt te gebruiken.
Ik begrijp dat Linux dit soort bugs heeft, daarom ben ik na MDK9 overgestapt op Windows, maar waar is de makkelijke fix, na meer dan een jaar ?

Oh, bijdeweg...ik kan de files vanaf m'n WD Mybook gewoon afspelen op m'n TV/Windows7 Pc.
Als ik diezelfde files vanaf de Syn. probeer af te spelen kunnen ze niet gevonden -terwijl ik ze wel zie- of op andere manier bewerkt worden.

Had ik dit van te voren geweten, dan had ik 12x een WD Mybook gekocht en op een switch gezet in plaats van deze Synology.  :(
  • Mijn Synology: DS1815+
  • HDD's: 8 * WD30EFRX
  • Extra's: +4GB

Ben(V)

  • Gast
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #8 Gepost op: 26 december 2014, 16:07:34 »
Even een paar dingen op een rijtje zetten.
Je zegt dat je die bestanden met die rare namen niet kunt verplaatsen nog verwijderen.
Mijn vraag is dan hoe heb je ze erop gezet en waarmee wil je ze verplaatsen of verwijderen.

Verder hebt je SABnzbd niet nodig om die python scripts te draaien.

De meeste pythons scripts zijn gemaakt voor versie 2 van python en niet versie 3.
Je loopt een grote kans dat het script niet draait onder python 3

Het script moet je aanroepen vanuit python en uiteraard met een volledig path
Dus iets van:

Citaat
/volume1/@appstore/python/bin/python /volume1/<path naar script>/<scriptnaam>.py

PS Als je bestanden gewoon op een share staan en ze vanuit je PC te benaderen zijn dan kun je ook onderstaand programma gebruiken op je PC.

http://sourceforge.net/projects/diacriticsremov/

Offline Bosui

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 1
  • Berichten: 14
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #9 Gepost op: 26 december 2014, 18:16:54 »
Ik heb ze erop gezet met behulp van File station, ftp verbinding gemaakt met de Mybook en zo gekopieerd via LAN.
Ik heb ook diverse folders met Total commander over het netwerk gekopieerd.
(Mybook heb ik een driveletter gegeven via een netwerkverbinding, de synology staat in de netwerkomgeving)
Een ander deel (vanaf een gewone externe HD) heb ik via USB gedaan, wat ook een stuk sneller ging.

Ik kan de bestanden niet verplaatsen/deleten/afspelen via File station op de synology, en ook niet via de Pc als ik ze benader met Total commander/Windows7.

Dat van Pyhton vermoedde ik al, maar surprise surprise...ook Pyhton 2 staat bij mij niet in Package center.
Ik heb de keus tussen Python module, wat een uitbreiding is voor Python2, of Python3.
Ik dacht die module heb ik niets aan als ik P2 er nog niet op heb, daarom P3 gekozen, klinkt als de laatste versie.

Relevant is nu denk ik:
Hoe kom ik erachter of ik Python2 heb, waar zou ik die kunnen vinden (path?), en hoe ? Via telnet ?

Diacriticsremover zag er veelbelovend uit, maar liep tegen hetzelfde probleem aan helaas. (bijlage)

Thanks voor de hulp man, ik waardeer dat echt.
  • Mijn Synology: DS1815+
  • HDD's: 8 * WD30EFRX
  • Extra's: +4GB

Offline Tien

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 265
  • -Ontvangen: 298
  • Berichten: 2.622
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #10 Gepost op: 26 december 2014, 18:59:29 »

Diacriticsremover zag er veelbelovend uit, maar liep tegen hetzelfde probleem aan helaas. (bijlage)



Die werkt zelfs niet met een share op admin nivo. Je zal dit 'op de NAS' moeten oplossen. Het eerder voorgestelde script werkt echt heel goed en je zal van die tekens ook afmoeten als je een backup wil maken van de betreffende bestanden. Eenmaal dat script goed draaien en verder zorgen bij het downloaden/kopieren voor de goede pages dan wel na iedere download het script laten draaien (hetgeen sab automatisch voor je kan doen). Ik heb er nooit meer last van nu.
  • Mijn Synology: DS214play
  • HDD's: 2 x WD4tb
  • Extra's: DS119j WD3tb

Offline Goner

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 22
  • -Ontvangen: 134
  • Berichten: 965
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #11 Gepost op: 26 december 2014, 23:45:53 »
Ik begrijp dat Linux dit soort bugs heeft,
Ik denk niet dat dit een Linux bug is ... ik werk nu al maanden met Linux Mint sinds XP niet meer ondersteund wordt en daarvoor met Mandrake/Mandriva en Unbuntu (in dual-boot met Windows) en heb nooit problemen met diakrieten gehad. Het lijkt er meer op dat Synology nog steeds de UTF-8 support niet goed voor elkaar heeft.

Blijkbaar is het nog steeds nodig om dat handmatig in te stellen, zie o.a. :
http://www.synology-forum.nl/spotweb/instellen-locales-nl_nl-utf8-op-synology-nas/15/
http://www.chainsawonatireswing.com/2012/01/08/set-up-the-synology-diskstation-ds411j-to-support-utf-8/
http://www.spot-net.nl/kb/article.php?a=162

UTF-8 support zit ook ingebakken in bijv. dit Java package :
http://pcloadletter.co.uk/2011/08/23/java-package-for-synology/
RTFM
NAS : DS212j with1 ST2000DM008 & 1 ST2000DL003 in SHR / DSM 5.2-5967 Update 8
LAN : Devolo 500&550Mbps homeplugs, 2 5-port switches, Maxxter ACT-WNP-RP-002
HW : Raspberry Pi 2B, Nintendo Wii U & Switch
OS : Windows 7

Ben(V)

  • Gast
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #12 Gepost op: 27 december 2014, 10:10:33 »
Ben er even ingedoken wat nu het echte probleem is en daarover het volgende.

Er zijn twee dingen aan de hand met deze speciale karakters in filenamen.

Het eerste is dicritische tekens die door verschillende applicatie verschillend worden weergegeven.
Hoe ze worden weergegeven is afhankelijk van instellingen van je linux (de locale) en uiteraard van de bron die de filenaam heeft aangemaakt.
Dit is allemaal niet zo mooi om naar te kijken maar verder wel mee te werken.

Het tweede probleem is dat er een aantal karakters zijn die door de shell als commandos geinterperteerd worden en die zorgen ervoor dat sommige bestanden niet te verwijderen of te verplaatsen zijn.
Je kunt die win de shell wel escapen door er een \ voor te zetten, maar in in Filemanager kan dat natuurlijk niet.

Zie: http://en.wikipedia.org/wiki/Filename

Offline janbal

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 30
  • -Ontvangen: 114
  • Berichten: 615
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #13 Gepost op: 27 december 2014, 13:46:12 »
Je kunt de bestanden deleten in filemanager door de hele map te deleten.


Je kunt ook bijv. WinSCP gebruiken.
  • Mijn Synology: DS220+
  • HDD's: WD Ultrastar DCHC320
Geeft iemand een nuttig antwoord? Gebruik de "Bedankt!" knop.

Ben(V)

  • Gast
Re: [HANDLEIDING] Renamen van bestanden met vreemde tekens.
« Reactie #14 Gepost op: 28 december 2014, 19:18:09 »
Heb even dat pythonscript een beetje aangepast en de overbodige dingen eruit gehaald.
Zoals het nu is, gaat hij alle bestanden op /volume1/video (inclusief alle subdirectories) scannen en renamen indien nodig.
Je kunt dit simpel wijzigen de eerste regel van het Main programma.
Daar staat nu:
StartFolder = "/volume1/video"
Dat kun je veranderen in wat je wilt, als het maar een bestaande directory is.

Save de pythoncode als bijvoorbeeld
Citaat
/volume1/video/TranslateChar.py

Citaat
/volume1/@appstore/python/bin/python2 /volume1/video/TranslateChar.py


Code: (python) [Selecteer]
#!/volume1/@appstore/python/bin/python2
#-*- coding: iso-8859-15 -*-
#
# If a file has been archieved under an ISO-8859 environment and unarchived
# under an UTF8 environment, then you will get an encoding format problem.
# The file will not be readable through SAMBA.
#
# To fix this problem, you must convert the encoding format
# to the UTF8 (default Synology encoding)
#
# NB: in all cases, files will be readable through samba, even if the detection
# failed. But converted characters will not be good
#
# Remark: I guess it should work for any other encoding style. Just replace
# ISO-8859-15 (Western Europe) by the one coresponding to your country:
# http://en.wikipedia.org/wiki/Character_encoding#Common_character_encodings
#

# get library modules
import sys, os

########################
# ----- Functions ---- #
########################

# Special character hex range:
# CP850: 0x80-0xA5 (fortunately not used in ISO-8859-15)
# UTF-8: 1st hex code 0xC2-0xC3 followed by a 2nd hex code 0xA1-0xFF
# ISO-8859-15: 0xA6-0xFF
# The function will detect if fileDirName contains a special character
# If there is special character, detects if it is a UTF-8, CP850 or ISO-8859-15 encoding
def renameFunc(fullPath, fileDirName):
    encodingDetected = False
    Count = 1
    # parsing all files/directories in order to detect if CP850 is used
    for Idx in range(len(fileDirName)):
        # /!\ detection is done 2char by 2char for UTF-8 special character
        if (len(fileDirName) != 1) & (Idx < (len(fileDirName) - 1)):
            # Detect UTF-8
            if ((fileDirName[Idx] == '\xC2') | (fileDirName[Idx] == '\xC3')) & ((fileDirName[Idx+1] >= '\xA0') & (fileDirName[Idx+1] <= '\xFF')):
                print os.path.join(fullPath, fileDirName) + " -> UTF-8 detected: Nothing to be done"
                encodingDetected = True
                break;
            # Detect CP850
            elif ((fileDirName[Idx] >= '\x80') & (fileDirName[Idx] <= '\xA5')):
                utf8Name = fileDirName.decode('cp850')
                utf8Name = utf8Name.encode('utf-8')
                os.rename(os.path.join(fullPath, fileDirName), os.path.join(fullPath, utf8Name))
                print os.path.join(fullPath, fileDirName)
                print os.path.join(fullPath, utf8Name) + " -> CP850 detected: Renamed"
                encodingDetected = True
                break;
            # Detect ISO-8859-15
            elif (fileDirName[Idx] >= '\xA6') & (fileDirName[Idx] <= '\xFF'):
                utf8Name = fileDirName.decode('iso-8859-15')
                utf8Name = utf8Name.encode('utf-8')
                os.rename(os.path.join(fullPath, fileDirName), os.path.join(fullPath, utf8Name))
                print os.path.join(fullPath, fileDirName)
                print os.path.join(fullPath, utf8Name) + " -> ISO-8859-15 detected: Renamed"
                encodingDetected = True
                break;
        else:
            # Detect CP850
            if ((fileDirName[Idx] >= '\x80') & (fileDirName[Idx] <= '\xA5')):
                utf8Name = fileDirName.decode('cp850')
                utf8Name = utf8Name.encode('utf-8')
                os.rename(os.path.join(fullPath, fileDirName), os.path.join(fullPath, utf8Name))
                print os.path.join(fullPath, fileDirName)
                print os.path.join(fullPath, utf8Name) + " -> CP850 detected: Renamed"
                encodingDetected = True
                break;
            # Detect ISO-8859-15
            elif (fileDirName[Idx] >= '\xA6') & (fileDirName[Idx] <= '\xFF'):
                utf8Name = fileDirName.decode('iso-8859-15')
                utf8Name = utf8Name.encode('utf-8')
                os.rename(os.path.join(fullPath, fileDirName), os.path.join(fullPath, utf8Name))
                print os.path.join(fullPath, fileDirName)
                print os.path.join(fullPath, utf8Name) + " -> ISO-8859-15 detected: Renamed"
                encodingDetected = True
                break;
    if (encodingDetected == False):
        print os.path.join(fullPath, fileDirName) + " -> No special characters detected: Nothing to be done"
    return


###########################
# ----- Main Program ---- #
###########################

StartFolder = "/volume1/video"

# process each sub-folders starting from the deepest level
print 80*'-'
print "Renaming folders to UTF-8 format..."
for dirname, dirnames, filenames in os.walk(StartFolder, topdown=False):
    for subdirname in dirnames:
        renameFunc(dirname, subdirname)
print "Folder renaming Done !"
print 80*'-'
print ""

# process each file recursively
print 80*'-'
print "Renaming files to UTF-8 format..."
for dirname, dirnames, filenames in os.walk(StartFolder):
    for filename in filenames:
        renameFunc(dirname, filename)
print "Files renaming Done !"
print 80*'-'
print ""


print ""
print "Character encoding translation done!"


 

VERPLAATST: Externe toegang bestanden

Gestart door BirdyBoard File Station

Reacties: 0
Gelezen: 1193
Laatste bericht 05 november 2017, 13:43:50
door Birdy
Root geen toegang tot bestanden eigenaar - system/ hibernation probleem

Gestart door victor50Board Optware / IPKG / Telnet

Reacties: 15
Gelezen: 4717
Laatste bericht 02 augustus 2018, 12:00:25
door Birdy
Domeinnaam verbergen bij delen bestanden

Gestart door J-JBoard Cloud Station & Drive

Reacties: 6
Gelezen: 1099
Laatste bericht 24 juni 2019, 20:19:20
door J-J
bestanden verplaatsen

Gestart door burdie_123Board File Station

Reacties: 7
Gelezen: 749
Laatste bericht 11 juni 2023, 16:35:10
door Birdy
Bestanden/Mappen verdwenen ?

Gestart door PetrokeBoard Synology DSM algemeen

Reacties: 4
Gelezen: 445
Laatste bericht 30 augustus 2024, 15:40:22
door Petroke