Ok, eu consertei meu código. Você precisa fazer duas coisas. Primeiro, você deve ter um "diretório_de_arquivos" que contém todos os arquivos e subpastas com arquivos. Em seguida, você deve ter uma nova pasta pai, "new_parent_directory", que está vazia. new_parent_directory será organizado pelas terminações dos arquivos dentro de "diretório_de_arquivos". Essencialmente, este script procura por todos os arquivos dentro de um diretório e diretórios dentro desse diretório, então, cria uma lista de terminações de arquivos e, em seguida, cria diretórios em um novo diretório baseado nessas terminações de arquivos e, em seguida, leva tudo os arquivos dentro do diretório pai e os move para os diretórios recém-estabelecidos.
Se você tem python instalado .....
No terminal, digite
python
então,
import os
então,
#this is ths directory that contains all your files
#YOU MUST CHANGE THIS!!!!!!
directory_of_Files = "/Users/name/Desktop/test1"
#AND YOU MUST CHANGE THIS!!!!!!
new_parent_directory = "/Users/name/Desktop/newhometest"
#From here down, it's all magic.
all_subfolders = [x[0] for x in os.walk(directory_of_Files)]
#Get the full file name and only the files
filenames=[]
for subfolder in all_subfolders:
os.chdir(subfolder)
for file in filter(os.path.isfile, os.listdir(os.getcwd())):
if not file.startswith("."):
filenames.append(os.getcwd()+"/"+file)
#get the file endings
all_files_endings = []
for i in filenames:
all_files_endings.append(i.split(".",1)[1])
#remove the duplications
all_files_endings = list(set(all_files_endings))
#create some folders in the new_directory with the file endings
for fileExtensions in all_files_endings:
os.mkdir(new_parent_directory + "/" + fileExtensions)
#move the files from their old destination to their new destination
newnames=[]
for subfolder in all_subfolders:
os.chdir(subfolder)
for file in filter(os.path.isfile, os.listdir(os.getcwd())):
if not file.startswith("."):
newnames.append(new_parent_directory+"/"+file.split(".",1)[1]+"/"+file)
print file
if len(filenames) == len(newnames):
for i in range(len(filenames)):
shutil.move(filenames[i], newnames[i])
Eu testei isso no Mac OSX 10.11 com o python 2.7. Você também pode simplesmente copiar todo o código em um arquivo de texto, salvá-lo como "something.py" e, em seguida, executá-lo a partir do terminal com o código,
python something.py