3 votos

¿Cómo transfiero todo el contenido de un archivo según un criterio a otra carpeta?

ingrese la descripción de la imagen aquí

Tengo varias carpetas, es decir, Fold1_part1 que tienen 6 subdirectorios. En cada uno de ellos hay 3 carpetas llenas de imágenes etiquetadas como 0,5,10. Estoy tratando de moverlos a otra carpeta que contendrá todas las imágenes de cada categoría (3 carpetas que son 0, 5 o 10).

6voto

En Terminal

 mkdir -p path/to/target/{0,5,10}
cd path/to/Frames
mv */*/0/* path/to/target/0/
mv */*/5/* path/to/target/5/
mv */*/10/* path/to/target/10/
 

PD: Use mv -i para que se le pregunte en caso de archivos con nombres idénticos.

1voto

yuRa Puntos 43

Lo resolví escribiendo un script de Python. Solo buscaba ver si Finder tenía alguna funcionalidad incorporada para hacerlo.

EDITAR: ¡Agregado en el código!

 import shutil
import os 
import time 
import sys
import concurrent.futures

path_HDD = "/Volumes/HDD/frames/"
path_10 = "/Volumes/HDD/frames_final/10"
path_0 = "/Volumes/HDD/frames_final/0"
path_5 = "/Volumes/HDD/frames_final/5"

def move(path):
    for root, files, directory in os.walk(path, topdown=False):
            if(len(root) == 36 or len(root) == 37):
                if(len(root) == 36 and int(root[-1]) == 0):
                    for r, d, f in os.walk(root, topdown=False):
                        for fi in f:
                            file_path = os.path.join(r, fi)
                            try:
                                shutil.copy(file_path, path_0)
                            except OSError as error:
                                print(error)
                                break
                elif(len(root) == 36 and int(root[-1]) == 5):
                    for r, d, f in os.walk(root, topdown=False):
                        for fi in f:
                            file_path = os.path.join(r, fi)
                            try:
                                shutil.copy(file_path, path_5)
                            except OSError as error:
                                print(error)
                                break
                elif(len(root) == 37 and int(root[-2:]) == 10):
                    for r, d, f in os.walk(root, topdown=False):
                        for fi in f:
                            file_path = os.path.join(r, fi)
                            try:
                                shutil.copy(file_path, path_10)
                            except OSError as error:
                                print(error)
                                break
    print("DONE")
    sys.exit(0)


if __name__ == "__main__":
    try :
        with concurrent.futures.ProcessPoolExecutor():
            move(path_HDD)
    except OSError as error:
        print(error)


 

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X