Copiando arquivos de uma origem para um diretório de destino, adicionando o nome da pasta contendo ao arquivo
O script abaixo copiará os arquivos recursivamente de um diretório de origem para um diretório flat , adicionando o nome do diretório superior (direto) ao nome do arquivo. O nome do diretório será inserido antes possível extensão no arquivo, exatamente como o seu exemplo.
O script
#!/usr/bin/env python3
import os
import sys
import shutil
for root, dirs, files in os.walk(sys.argv[1]):
for f in files:
# split off the superior directory's name
dirname = root.split("/")[-1]
# define file+path, possible extension position
src = os.path.join(root, f); spl = f.rfind(".")
# defining new filename
newname = f[:spl]+"_"+dirname + f[spl:] if spl != -1 else f+"_"+dirname
# copy the file into the new directory
shutil.copyfile(src, os.path.join(sys.argv[2], newname))
Como usar
- Copie o script em um arquivo vazio, salve-o como
copyandrename.py
-
Execute-o com os diretórios de origem e de destino como argumentos:
python3 /path/to/copyandrename.py <source_directory> <target_directory>
Meu comando de teste foi, por exemplo,
python3 '/home/jacob/Bureaublad/pscript_4.py' '/home/jacob/Bureaublad/testmap' '/home/jacob/Bureaublad/target'
Como sempre, teste primeiro uma amostra!