Em um único diretório (plano)
Se todos os arquivos estiverem em um mesmo diretório, o script abaixo deve fazer o trabalho.
#!/usr/bin/env python3
import os
import sys
dr = sys.argv[1]; ids = ("_3800.mp4", "_8000.mp4")
checklist = [f[:-9] for f in os.listdir(dr) if f[-9:] in (ids)]
for f in [f for f in set(checklist) if checklist.count(f) != 1]:
os.remove(dr+"/"+f+"_8000.mp4")
Como funciona:
- O script lista todos os arquivos, terminando com
_3800.mp4
ou _8000.mp4
, retirados de seus finais
- Se o nome (stripped-) ocorrer duas vezes, as duas versões existirão (já que os nomes duplicados são impossíveis em um único diretório e o mesmo)
- Posteriormente, o script remove a
_8000.mp4
- versão das duplicatas
Em um diretório em camadas (pesquisa recursivamente)
Uma abordagem ligeiramente diferente. Ele compara arquivos recursivamente e (somente) exclui a _8000.mp4
- versão se a versão _3800.mp4
- existir.
Eu não tinha certeza se havia necessidade de uma pesquisa recursiva , mas a adicionei assim mesmo.
Como funciona:
- Primeiro, liste os arquivos a serem mantidos de qualquer maneira
- Em seguida, remova possíveis "throw aways", se existir a versão para manter.
#!/usr/bin/env python3
import os
import sys
files_dir = sys.argv[1]; file_list = []
#---
keep = "_3800.mp4"; rm = "_8000.mp4"
#---
for root, dirs, files in os.walk(files_dir):
for name in files:
if name.endswith(keep):
file_list.append(name)
for name in files:
if name.endswith(rm) and name.replace(rm, keep) in file_list:
os.remove(root+"/"+name)
Como usar
Para usar um desses scripts:
- Copie o script em um arquivo vazio, salve-o como
clean_directory.py
-
Execute-o, com o diretório para limpar como um argumento, pelo comando:
python3 /path/to/clean_directory.py </path/to/directory/to/clean>