3 votos

Mover automáticamente archivos a una carpeta principal + eliminar subcarpeta

Estoy tratando de averiguar cómo mover archivos automáticamente desde una carpeta a su carpeta principal y eliminar la carpeta original. Para ilustrar, aquí está mi estructura:

Carpeta Principal
    – Subcarpeta
            – File.avi
            - File2.avi
            - Otroarchivo.trash

Quiero mover todos mis archivos .avi a la Carpeta Principal y deshacerme de la Subcarpeta por completo (Subcarpeta no estará vacía después de mover estos archivos, pero quiero eliminarla y su contenido restante).

He estado jugando con Hazel pero supongo que mi lógica no es la mejor y no logro entenderlo. ¿Es posible con Hazel o Automator o ambos?

¡Gracias de antemano!

1voto

M K Puntos 8307

La siguiente solución moverá todos los archivos ".avi" (y solo esos) dentro de subcarpetas (a un nivel de profundidad) a la carpeta principal y eliminará las subcarpetas. Puede que no sea la solución más óptima ya que hay muchas formas diferentes en que se pueden escribir scripts de shell para resolver un problema.

Supuestos y restricciones:

  1. Solo se moverán archivos ".avi". Otros archivos serán ignorados y eliminados sin previo aviso.
  2. El script (actualizado) solo funciona hasta tres niveles por debajo de la carpeta principal. Si hay subcarpetas dentro de las subcarpetas que contienen archivos ".avi", serán eliminadas como cualquier otro archivo (incluyendo esos archivos ".avi").
  3. Este script puede manejar archivos ".avi" que tienen espacios en el nombre del archivo.

¡Precaución! Esto utiliza un script de shell que mueve archivos y elimina directorios/archivos por completo. Haz una copia de seguridad antes de intentar usarlo (incluso cambios menores en el script pueden causar problemas graves e irreparables). No hay forma de recuperarse de problemas, excepto restaurando desde una copia de seguridad.

Solución:

  • En Hazel, configura una vigilancia para la carpeta principal en el panel de Carpetas a la izquierda.

  • Agrega una regla haciendo clic en el botón "+" y ponle el nombre que desees.

  • Configura los criterios de condiciones de la siguiente manera

    Si  de las siguientes condiciones se cumplen para 
  • Configura el Hacer lo siguiente con los archivos o carpetas coincidentes: de la siguiente manera

    </code></pre></li>
    <li>Haz clic en el botón <strong>Editar script</strong> al lado del menú desplegable.</li>
    <li>Deja la opción <strong>Shell:</strong> en la opción por defecto (<code>'/bin/sh</code>).</li>
    <li><p>En el cuadro de texto debajo, copia y pega este script de shell (he incluido comentarios que empiezan con # - solo para facilitar la comprensión o modificación)</p>
    <pre><code># Obtener el nombre del directorio y entrar en él - este debería ser el directorio principal
    dir=`dirname $1`
    cd $dir
    
    # Encontrar todos los directorios un nivel abajo
    # Para cada subdirectorio, mover todos los archivos ".avi" a su directorio principal,
    # luego eliminar el subdirectorio y su contenido (cambia avi por cualquier otra extensión si es necesario)
    find . ! -path . -type d -maxdepth 1 -exec sh -c '
    dir="$0"
    mv $dir/*/*/*.avi $dir/..
    rm -rf $dir
    ' {} ';'
    </code></pre></li>
    </ul></x-turndown>

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