2

i've 600gb of data's from Mac Users, saved in a disk formatted in HFS+. A lot of folder and file name contain 'final spaces'. I don't know how users inserted them , but the result is that via Samba, a folder named "Customer ABC " (with the final space) become for example "EHFJ~1". In addition, users used special charachters like • and others strange file name.

How to massive rename that files/folder removing final spaces ? Is it possible using a linux / mac os script ?

Thanks

stighy
  • 931
  • 8
  • 21
  • 32

2 Answers2

2

I have written a small python script to remove all characters from filenames that makes handling them under *nix difficult.

Perhaps this can help you as well.

#! /usr/bin/python
# -*- coding: UTF-8 -*-

"""
usage: fixFileNames.py FILE...

Renames FILEs to sensible names, avoiding collision. 
"""

import sys
import os
from string import maketrans

def fixFileName(file):
    '''
    move file to filename:
    - without spaces, pipe characters, quotes
    '''
    intab = ' |'
    outtab = '__'
    trantab = maketrans(intab, outtab)
    newFileName = file.translate(trantab, '\'\"').replace('_-_', '-')
    if file != newFileName:
        #only renames file if it's name contains any unwanted characters
        if os.path.exists(newFileName):
            print "ERROR: Not renaming %s, %s exists already" % (file, newFileName)
        else:
            print "renaming %s to %s" % (file, newFileName)
            os.rename(file, newFileName)
#    else:
#        print "file %s and newFilename %s are equal" % (file, newFileName)

if __name__ == "__main__":
    if not len(sys.argv) > 1:
        print __doc__
        sys.exit(1)
    for file in sys.argv[1:]:
        fixFileName(file)

Anyone is free to use and or improve this. If you have any improvements I'd like to hear about them.

Bram
  • 1,121
  • 6
  • 9
0

Yes, it is! I don't knwo exactly how, but since nobody else answered this yet, I think it is better than nothing. Using some regular expressions, that match final whitespace it should be possible. I don't know however how to get the truncated part of the filename

Ingo
  • 51
  • 4