我有几个像这样的文件 -
*.sss和*_passive.sss
如果我有一个名为blah1.sss和blah1_passive.sss的文件,我想摆脱blah1.sss并重命名为blah1_passive.sss.但是,如果我没有blah1_passive.sss,我想记录文件名并保留blah1.sss.
我能够找到所有*_passive.sss文件,但我想知道awk/sed etc命令可以将*_passive.sss重命名为*.sss.
编辑:现在我有这个,但os.rename不会覆盖文件,但我需要覆盖它.
import os, fnmatch
def locate(pattern, root=os.curdir):
#ignore directories- uncomment to make ignore work
#ignored = ["0201", "0306"]
for path, dirs, files in os.walk(os.path.abspath(root)):
#for dir in ignored: # if dir in dirs: #dirs.remove(dir)
for filename in fnmatch.filter(files, pattern):
yield os.path.join(path, filename)
for filename in locate("*_passive.sss"):
#found the files that i want to rename, but os.rename() refuses to overwrite !!
newfilename=filename.rstrip("_passive.sss") + ".sss"
os.rename(filename,newfilename)
Run Code Online (Sandbox Code Playgroud)
在Unix中,您可以在Bourne shell中使用以下命令(即sh/ bash):
for f in *_passive.sss; do mv -v $f `basename $f _passive.sss`.sss; done
Run Code Online (Sandbox Code Playgroud)