O script (python) abaixo cria subpastas e organiza seus arquivos nas pastas:
Além disso:
- O script calcula o número de pastas e adiciona zeros à esquerda aos nomes das pastas para classificação adequada (desde que você mencionou milhares de arquivos, ou seja, centenas de pastas)
- O número de arquivos por pasta pode variar, dependendo da sua configuração na cabeça do script
O script pressupõe:
- Todos os arquivos têm uma extensão, todos os arquivos têm a mesma extensão
- Seus arquivos são nomeados
image1.tiff
,image2.tiff
etc (sem zeros à esquerda).
O script
#!/usr/bin/env python3
import os
import math
import shutil
#---
directory = "/path/to/files" # path to your files
n_perfolder = 7 # number of files per sub folder
#--
# creating file list, extension
f_list = os.listdir(directory); ext = f_list[0].split(".")[-1]
# calculate number of folders
n_folders = math.ceil(len(f_list)/n_perfolder)
# creating folder names, including leading zeros
folders = [str(fn+1) for fn in range(n_folders)]
fl_names = [(len(max(folders, key=len))-len(fl))*"0"+fl for fl in folders]
# creating folders and allocate files
for i in range(len(fl_names)):
mkfolder = directory+"/"+fl_names[i]
if not os.path.exists(mkfolder):
os.makedirs(mkfolder)
r = range(i*n_perfolder+1, i*n_perfolder+n_perfolder+1)
for n in r:
try:
file = directory+"/"+"image"+str(n)+"."+ext
target = mkfolder+"/"+"image"+str(n)+"."+ext
shutil.copyfile(file, target)
except FileNotFoundError:
pass
Como usar
Copie o script em um arquivo vazio, na seção head, defina o diretório para seus arquivos e o número de arquivos por subdiretório, salve-o como organize.py
.
Execute-o pelo comando:
python3 /path/to/organize.py
Nota
Se você quiser mover os arquivos em vez de copiá-los, substitua a linha:
shutil.copyfile(file, target)
por:
shutil.move(file, target)
(note o recuo!)