У меня есть несколько файлов, таких как this-переименование файлов/удаление
* .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)
Попробуйте 'os.remove (newfilename); os.rename (filename, newfilename) ' – neurino