我有 600GB 的 Mac 用户数据,保存在 HFS+ 格式的磁盘中。许多文件夹和文件名包含“结尾空格”。我不知道用户是如何插入这些空格的,但结果是通过 Samba,名为“Customer ABC”(带有结尾空格)的文件夹变成了例如“EHFJ~1”。此外,用户还使用了特殊字符(如 •)和其他奇怪的文件名。
如何批量重命名文件/文件夹并删除末尾的空格?是否可以使用 Linux / Mac OS 脚本?
谢谢
答案1
我编写了一个小型 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)
任何人都可以自由使用或改进它。如果您有任何改进,我很乐意听取您的意见。
答案2
是的!我不知道具体怎么做,但既然还没有其他人回答这个问题,我认为总比没有好。使用一些匹配最后空格的正则表达式应该是可能的。但我不知道如何获取文件名的截断部分