Se eu entendi bem, o seguinte é o caso:
- Você copiou um número (presumivelmente grande) de arquivos para um diretório existente e precisa / deseja reverter a ação.
- O diretório de destino contém um número de outros arquivos, que você precisa manter lá, o que torna impossível simplesmente remover todos os arquivos do diretório
O script abaixo procura no diretório original (fonte) e lista esses arquivos. Em seguida, ele procura no diretório para o qual você copiou os arquivos e remove apenas os arquivos listados, como eles existem no diretório de origem.
O elemento try
é adicionado para evitar erros, por exemplo, no caso de você já ter removido alguns arquivos manualmente ou se nem todos os arquivos do diretório de origem foram copiados para o destino. Se você precisar de privilégios sudo, simplesmente execute o script com "sudo" (veja abaixo).
O script
#!/usr/bin/env python
import os
source_dir = "/path/to/source" # the folder you copied the files from
target_folder = "/path/to/destination" # the folder you copied the files to
for root, dirs, files in os.walk(source_dir):
for name in files:
try:
os.remove(target_folder+"/"+name)
except FileNotFoundError:
pass
Como usar
- Cole o script em um arquivo vazio, salve-o como
reverse.py
, - Insira os caminhos corretos para a pasta de origem e destino,
- Torne-o executável por conveniência,
-
Execute-o pelo comando:
[sudo] /path/to/reverse.py
Aviso
Primeiro, tente um diretório de teste se eu entendi bem o que você precisa alcançar!
Se o diretório de origem for "plano"
Caso o diretório de origem não tenha subdiretórios, o script pode até ser mais simples:
#!/usr/bin/env python
import os
source_dir = "/path/to/source" # the folder you copied the files from
target_folder = "/path/to/destination" # the folder you copied the files to
for file in os.listdir(source_dir):
try:
os.remove(target_folder+"/"+file)
except FileNotFoundError:
pass
Nota
Se a ação de cópia sobrescreveu (substituído) um arquivo de nome similar no destino, o arquivo será removido, mas o arquivo original (obviamente) não será trazido de volta pelo script. A suposição é que não há confrontos de nomes.