Desde que você mencionou que você tem o Fedora, aqui está um script Python para você, que usa a sintaxe do Python 2, que deve funcionar sem problemas ou diferenças tanto no Ubuntu quanto no Fedora. (Seria bom usar o prename
que os derivados do Debian usam por padrão, mas infelizmente o Fedora não. Vou deixar isso como um exercício para o futuro, e o prename
ainda é útil para usuários do Ubuntu.)
Aqui está o próprio script:
#!/usr/bin/env python
import os
import sys
import shutil
def find_files(start_dir):
ext_paths = []
for root,dirs,files in os.walk(start_dir):
if root == start_dir: continue
ext_paths = ext_paths + map( lambda x: os.path.join(root,x),files )
return ext_paths
def alter_path(path,new_dir):
newpath = path.replace(".3-0.rec/00001","").replace("2017-","")
newpath = newpath.replace("BBC_english/","BBC_english__").replace("19.","19__")
return os.path.join(new_dir,newpath)
def main():
for i in find_files(sys.argv[1]):
print(i,alter_path(i,sys.argv[2]))
shutil.copy(i,alter_path(i,sys.argv[2]))
if __name__ == '__main__':
main()
Aqui está em ação:
$ ./rename_mpegs.py BBC_english/ newpath/
('BBC_english/2017-09-19.23.00.3-0.rec/00001.mpeg', 'newpath/BBC_english__09-19__23.00.mpeg')
('BBC_english/2017-09-19.20.00.3-0.rec/00001.mpeg', 'newpath/BBC_english__09-19__20.00.mpeg')
('BBC_english/2017-09-19.22.00.3-0.rec/00001.mpeg', 'newpath/BBC_english__09-19__22.00.mpeg')
('BBC_english/2017-09-19.21.00.3-0.rec/00001.mpeg', 'newpath/BBC_english__09-19__21.00.mpeg')
$ tree newpath/
newpath/
├── BBC_english__09-19__20.00.mpeg
├── BBC_english__09-19__21.00.mpeg
├── BBC_english__09-19__22.00.mpeg
└── BBC_english__09-19__23.00.mpeg
Eu sugiro que você substitua shutil.copy()
part por shutil.move()
, ou você pode simplesmente se livrar do diretório antigo no final, mas deixarei isso para você decidir.
As regras são simples: chame o script com fonte como argumento 1 e destino como argumento 2 para o script do diretório um nível acima de BBC_english
. No geral, o script é rápido e sujo, a renomeação é codificada; Ninguém diria que não é ideal, mas funciona.