红联Linux门户
Linux帮助

解决快盘一直扫描更改中-重命名带空格的名字

发布时间:2015-04-15 09:41:22来源:ubuntukylin作者:hnuzhoulin

就目前而言,我多次碰到快盘一直显示正在扫描更改中时因为同步目录下面有文件或者目录名中含有空格导致的,因此献丑写了一个脚本,自动遍历搜索同步目录下的所有文件和目录,将空格替换为下划线。


注意::脚本简陋,可能不完善,可以先将里面的 含有 os.renames   的两行注释掉看看输出是不是自己想要的。


# -*- coding: utf-8 -*- 
#!/usr/bin/python
#Des:replace ' ' and ':' to '_' in the name of files and dirs.
#Author:zhoulin zhoulin@itzhoulin.com
#Date:20150401

import os
import sys
import re

def is_space(char):
if re.search(r"\s",char):
return True
else:
return False

currentDir=sys.argv[1]
print(currentDir)
dirlist = []
for dirName,subDirList,fileList in os.walk(currentDir):
for fname in fileList:
abspath=dirName+os.sep+fname
if(is_space(fname)):
#            print("file name is:"+fname)
print(abspath)
newfname=re.sub(' ','_',fname)
newfname=re.sub(':','_',newfname)
print(dirName+os.sep+newfname)
newname=dirName+os.sep+newfname
os.renames(abspath,newname)
if(is_space(dirName)):
#        print(dirName)
dirlist.append(dirName)

#修改文件夹名中的空格需要从子目录开始一级一级目录修改
dirlist.sort(reverse=True)
print("\n===================================\n")
print("Dir which contains empty")
for dirname in dirlist:
print("initial:"+dirname)
subdir = dirname.split('/')[-1]
print("subdir:"+subdir)
newsubdir = re.sub(' ','_',subdir)
print(dirname.split('/')[:-1])
newdirname=''
for i in dirname.split('/')[:-1]:
newdirname += i +os.sep
#        print(newdirname)
newdirname = newdirname+newsubdir
print("Final:"+newdirname)
os.renames(dirname,newdirname)
print("\n")