就目前而言,我多次碰到快盘一直显示正在扫描更改中时因为同步目录下面有文件或者目录名中含有空格导致的,
因此献丑写了一个脚本,自动遍历搜索同步目录下的所有文件和目录,将空格替换为下划线。。
注意::脚本简陋,可能不完善,可以先将里面的 含有
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")