Назад | Перейти на главную страницу

Как удалить «последнее пустое место» для имени папки и имени файла?

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

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

Спасибо

Я написал небольшой скрипт на 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)

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

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