Como remover o 'espaço em branco final' para o nome da pasta e o nome do arquivo?

2

Eu tenho 600gb de dados de usuários do Mac, salvos em um disco formatado em HFS +. Muitas pastas e nomes de arquivos contêm 'espaços finais'. Eu não sei como os usuários os inseriram, mas o resultado é que, via Samba, uma pasta chamada "Customer ABC" (com o espaço final) se torna, por exemplo, "EHFJ ~ 1". Além disso, os usuários usavam caracteres especiais como • e outros nomes de arquivos estranhos.

Como maciças renomear arquivos / pastas para remover espaços finais? É possível usar um script linux / mac os?

Obrigado

    
por stighy 28.05.2012 / 14:44

2 respostas

2

Eu escrevi um pequeno script python para remover todos os caracteres de nomes de arquivos que dificultam o manuseio deles * * nix.

Talvez isso também possa ajudá-lo.

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

Qualquer um pode usar e / ou melhorar isso. Se você tiver alguma melhoria, eu gostaria de ouvir sobre eles.

    
por 28.05.2012 / 16:13
0

Sim, é! Eu não sei exatamente como, mas como ninguém mais respondeu isso, acho que é melhor que nada. Usando algumas expressões regulares, que correspondem ao espaço em branco final, isso deve ser possível. Eu não sei como obter a parte truncada do nome do arquivo

    
por 28.05.2012 / 15:58