2 votos

Crear nueva carpeta para cada archivo

He estado tratando de crear algún tipo de script para automatizar el movimiento de alrededor de 408 artículos de tamaño de alrededor de 1,5 TB.

Lo que estoy queriendo hacer es crear una carpeta basada en el nombre de archivo, pero excluye la extensión, a continuación, mueva el elemento original con el mismo nombre en la carpeta. Todos los archivos con extensiones diferentes, y también tienen períodos durante todo el nombre. Se debe ejecutar como un script de shell o AppleScript, ya que se ejecuta bajo launchd después de la jugada inicial se realiza para automatizada se mueve de archivos. Hay una buena manera de ir sobre esto? (Aún no usando AppleScript). No me importa usar el shell o cualquier otro método que se sugiere.

He encontrado este post en StackOverflow, pero no podía hacer demasiado sentido, ya que parecía que generan errores. Cualquier ayuda es muy apreciada. Los archivos alfanuméricos y secuencias aleatorias de caracteres en los nombres (creo que esto es lo que se está imponiendo en AppleScript.

Edit: lo Siento por la espera... estaba en el trabajo.

Tener algo como:

Movies
    |- Anchorman.mkv
    |- Big Buck Bunny.mov
    |- Spy.mp4
    |- Shawshank Redemption.avi

Y me gustaría el resultado:

Movies 
   |- Anchorman *"This is a folder"*
       |- Anchorman.mkv *"This is the file"*
   |- Big Buck Bunny
       |- Big Buck Bunny.mov
   |- Spy
       |- Spy.ext
   |- Shawshank Redemption [1994](1080p)
       |- Shawshank Redemption [1994](1080p).avi

4voto

Raghu Puntos 364

Supongo que todos los 408 están en la misma carpeta y tiene extensión. Algo como esto:

 Folder
|- File1.ext
|- File2.ext
|- File3.ext
|- File4.ext
 

Y desea el siguiente resultado:

 Folder 
|- File1 *"This is a folder"*
   |- File1.ext *"This is the file"*
|- File2
   |- File2.ext
|- File3
   |- File3.ext<br>
|- File4<br>
   |- File4.ext<br>
 

Si ese es el caso, puede hacerlo con el terminal con el siguiente comando (ejecutarlo dentro de la carpeta donde se almacenan los archivos) fallará al crear la carpeta de los archivos sin extensión):

 for FILE in *; do FOLDER=$(echo $FILE | sed 's/\.[A-Za-z0-9]*$//'); mkdir "$FOLDER"; mv "$FILE" "$FOLDER" ; done
 

0voto

Como otros han respondido, es difícil saber exactamente lo que estás buscando sin los detalles. Este AppleScript debe ser un buen punto de partida, y se puede ajustar a sus necesidades. Se le pedirá que identifique una carpeta que contiene los archivos que desea poner en subcarpetas. He puesto una propiedad en la parte superior llamado removePeriods, que se puede establecer en true o false (sin las comillas). Si que es cierto, que se va a eliminar todos los períodos, desde el nombre de archivo y utilizar ese nombre para crear una carpeta. Por supuesto, usted puede ajustar que ser los signos de puntuación que quisiera. Usted podría tener la tira de otros signos de puntuación así. Por último, se toma el archivo y lo traslada a la nueva carpeta.

property rootFolder : ""
property removePeriods : true

--Assuming all the files you want to move are in one folder.
if rootFolder is "" then
    set rootFolder to choose folder
end if

--Get a list of every visible file in the folder (assuming you don't want to process hidden files)
tell application "System Events" to set myFiles to ¬
every file in rootFolder whose visible is true

repeat with aFile in myFiles
    --Get the file name
    set aName to name of aFile
    --If removePeriods property above is set to true, take all the periods out of the file name
    if removePeriods then
        set tid to text item delimiters
        set text item delimiters to "."
        if (count of text items of aName) is greater than 2 then
            set aName to text items 1 through ((count of text items of aName) - 1) of aName
        else
            set aName to text item 1 of aName
        end if
        set text item delimiters to tid
        set aName to every item of aName as text
    end if

--Make a new folder with the name of the file, inside the rootFolder (the original folder you selected
tell application "Finder"
    set newFolder to make new folder at rootFolder with properties {name:aName}
    move (aFile as alias) to newFolder
end tell

end repeat

Si tiene carpetas dentro de carpetas, que es otro nivel, pero se puede hacer con otro bucle. Si desea que todas las nuevas carpetas con archivos en ellos para ir a un nuevo lugar, usted sólo tiene que agregar la ruta de acceso. Si desea extraer sólo el nombre antes de la primera marca de puntuación para hacer la carpeta, usted puede establecer el nombre del primer elemento de texto solamente. Probablemente también desee agregar una comprobación para asegurarse de que no hay ya una carpeta con el nombre que se están creando.

EDIT: A petición de otro usuario, voy a agregar una nota para aclarar por qué, me puse rootFolder a una propiedad en lugar de un estándar de la variable. En la foto de arriba, parece que todos los OP archivos están en la carpeta películas. Una propiedad, en AppleScript (y en términos simples), es una variable que se guarda (almacenado) entre pistas. Se guardará hasta que el script se compila de nuevo, momento en el cual se ajustará a la "". Una variable normal no tendrá memoria de una ejecución anterior de la secuencia de comandos. Yo elegí hacer rootFolder una propiedad de manera que el usuario no tiene que seleccionar manualmente la carpeta de proceso en cada carrera, sólo la primera ejecución. Sin embargo, usted puede reemplazar el comienzo de la secuencia de comandos a través de la 'end if' con las siguientes dos líneas de código:

set rootFolder to choose folder
set removePeriods to true

También puede especificar la ruta a la carpeta en lugar de que el usuario seleccione. Hay muchas opciones. También debo decir de nuevo que esto no es un guión terminado la intención de uso final, he creado como un lugar para empezar. Sin embargo, he utilizado esta fundación como parte de una mucho más grande, más complicada secuencia de comandos, para reorganizar hacia arriba de 500.000 archivos agrupados en nombre único de carpetas, así que confío en la estructura.

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