Você pode usar um script Python simples para fazer o trabalho:
#!/usr/bin/env python3
import os
import shutil
source_dir = "/path/to/files"; target_folder = "/path/to/destination"; extensions = (".mp3", ".avi")
for root, dirs, files in os.walk(source_dir):
for name in files:
if name.endswith(extensions):
file = root+"/"+name
shutil.move(file, target_folder+"/"+name)
Cole o código acima em um arquivo de texto vazio, insira os diretórios de destino e de origem, insira as extensões de arquivo que deseja mover, salve-o como move.py
e execute-o pelo comando:
python3 /path/to/move.py
Para evitar a substituição de possíveis duplicados (e renomeá-los)
Se houver o risco de o diretório conter duplicatas (nomes) que você deseja manter, o código será um pouco mais extenso:
#!/usr/bin/env python3
import os
import shutil
source_dir = "/path/to/files"; target_folder = "/path/to/destination"; extensions = (".mp3", ".avi")
dup = 1
for root, dirs, files in os.walk(source_dir):
for name in files:
if name.endswith(extensions):
file = root+"/"+name
while os.path.exists(target_folder+"/"+name):
name = name[:name.rfind(".")]+"_"+str(dup)+name[name.rfind("."):]
dup = dup+1
shutil.move(file, target_folder+"/"+name)
Nesse caso, várias ocasiões de file.mp3
serão renomeadas para:
file.mp3
file_1.mp3
file_2.mp3
...etc.