Как удалить "последний пробел" для имени папки и имени файла?
У меня есть 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)
Любой может свободно использовать и / или улучшать это. Если у вас есть какие-либо улучшения, я хотел бы услышать о них.
Да, это! Я не знаю точно, как, но поскольку никто еще не ответил на это, я думаю, что это лучше, чем ничего. Используя некоторые регулярные выражения, которые соответствуют конечным пробелам, это должно быть возможно. Я не знаю, однако, как получить усеченную часть имени файла