Как удалить "последний пробел" для имени папки и имени файла?

У меня есть 600 ГБ данных от пользователей Mac, сохраненных на диске, отформатированном в HFS+. Многие папки и имена файлов содержат "последние пробелы". Я не знаю, как пользователи их вставили, но в результате через Samba папка с именем "Customer ABC " (с последним пробелом) становится, например, "EHFJ~1". Кроме того, пользователи использовали специальные символы, такие как • и другие странные имена файлов.

Как массово переименовать эти файлы / папки, удалив последние пробелы? Возможно ли использовать скрипт linux / mac os?

Спасибо

2 ответа

Решение

Я написал небольшой скрипт на python для удаления всех символов из имен файлов, что затрудняет их обработку в *nix.

Возможно, это может помочь вам.

#! /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)

Любой может свободно использовать и / или улучшать это. Если у вас есть какие-либо улучшения, я хотел бы услышать о них.

Да, это! Я не знаю точно, как, но поскольку никто еще не ответил на это, я думаю, что это лучше, чем ничего. Используя некоторые регулярные выражения, которые соответствуют конечным пробелам, это должно быть возможно. Я не знаю, однако, как получить усеченную часть имени файла

Другие вопросы по тегам