文件重命名/删除

Ill*_*ist 0 python unix

我有几个像这样的文件 -

*.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)

Gre*_*egg 5

在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)