OSX: busque subcarpetas, aplane la estructura de directorios en una nueva carpeta y luego muévase al escritorio

OSX: busque subcarpetas, aplane la estructura de directorios en una nueva carpeta y luego muévase al escritorio

Estoy en el proceso de limpiar una enorme biblioteca de mangas (principalmente, pero no solo, archivos de imagen). Cada manga tiene una carpeta principal que contiene subcarpetas, una para cada volumen.

Pero a veces, las carpetas de volúmenes contienen solo archivos de imágenes y otras veces contienen subcarpetas.

Me gustaría un script que, para la carpeta manga seleccionada:

  • comprobar qué carpetas de volumen tienen subcarpetas
  • aplanar la estructura de directorios de las carpetas del volumen con subcarpetas. En lugar de poner todas las imágenes en la carpeta principal y borrar las subcarpetas, me gustaría crear una nueva carpeta en el escritorio y copiar todas las imágenes de las subcarpetas en ella.
  • cambie el nombre de la carpeta creada en el escritorio después de su carpeta principal original

Antes :

carpeta_manga

volume1_folder

    subfolder1 / image1, image2, image3
    subfolder2 / image4, image5, image6
    subfolder3 / image7, image8, image9

volume2_folder

    image1, image2, image3, image4, image5, image6, image7, image8, image9

volume3_folder

    subfolder1 / image1, image2, image3
    subfolder2 / image4, image5, image6
    subfolder3 / image7, image8, image9

Después:

Escritorio:

volume1_folder

    image1, image2, image3, image4, image5, image6, image7, image8, image9

volume3_folder

    image1, image2, image3, image4, image5, image6, image7, image8, image9

Las carpetas originales deben permanecer intactas.para poder comprobar si hay archivos extraviados, etc.

En este momento, uso un AppleScript que aplana la estructura de directorios para cada carpeta de volumen que selecciono. Crea una nueva carpeta en su interior, que lleva el nombre de su carpeta principal con todas las imágenes copiadas en su interior.

Lo que no:

  • comprobar qué carpetas de volumen tienen subcarpetas (tengo que seleccionar cada carpeta de volumen individualmente e iniciar el script cada vez)
  • mueva la carpeta creada con la estructura de directorios aplanada al escritorio

Intenté implementar los cambios yo mismo, pero podía mover la nueva carpeta al escritorio o cambiarle el nombre a su carpeta principal. Cuando pongo las dos instrucciones (cualquiera que sea la que se puso primero), aparece un error que dice que no puede encontrar la carpeta después de ejecutar la primera instrucción. Aquí está el guión:

tell application "Finder"
    set theTopFolder to (selection as alias)
    set theFiles to a reference to every file of (entire contents of folder theTopFolder)
    set theNewFolder to make new folder at theTopFolder with properties {name:"Flattened Files"}
    duplicate theFiles to theNewFolder
    set name of theNewFolder to name of theTopFolder
    
    
    --move theNewFolder to "Macintosh HD:Users:xx:Desktop:"
end tell

Respuesta1

tell application "Finder"
    repeat with f in (get folders of (POSIX file "/Users/username/manga_folder" as alias))
        make new folder at desktop with properties {name:(get name of f)}
        duplicate files of entire contents of f to result
    end repeat
end tell

También puedes usar un comando de shell como este:

cd ~/manga_folder;for d in *;do mkdir ~/Desktop/"$d";find "$d" -type f|while read f;do cp "$f" ~/Desktop/"$d";done;done

O si tienes GNU cp:

cd ~/manga_folder;for d in *;do mkdir ~/Desktop/"$d";find "$d" -type f -exec gcp -t ~/Desktop/"$d" {} +;done

información relacionada