Estoy tratando de descubrir cómo mover archivos automáticamente de una carpeta a su carpeta principal y eliminar la carpeta original. Para ilustrar, aquí está mi estructura:
Parent Folder
– Subfolder
– File.avi
- File2.avi
- Otherfile.trash
Quiero mover todos mis archivos .avi al Parent Folder
y deshacerme de ellos Subfolder
por completo ( Subfolder
todavía no estará vacío después de mover estos archivos, pero quiero eliminarlo y sus restos de contenido).
He estado jugando con Hazel, pero supongo que mi lógica no es la mejor y no puedo resolverlo. ¿Es posible con Hazel o Automator o ambos?
¡Gracias de antemano!
La siguiente solución moverá todos (y solo) los archivos ".avi" dentro de las subcarpetas (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 maneras diferentes en las que se pueden escribir scripts de shell para resolver un problema.
Supuestos y restricciones:
Precaución: Esto utiliza un script de shell que mueve archivos y elimina directorios/archivos por completo. Tenga una copia de seguridad antes de intentar usarla (incluso los cambios menores en la secuencia de comandos pueden causar problemas graves e irrecuperables). No hay forma de recuperarse de ningún problema, excepto restaurar desde una copia de seguridad.
Solución:
Establezca los criterios de condiciones de la siguiente manera
If <any> of the following conditions are met for <any of its sub-files or folders>
<Any File>
Establezca Haga lo siguiente en el archivo o carpeta coincidente: de la siguiente manera
<Run shell script> <embedded script>
'/bin/sh
).En el cuadro de texto a continuación, copie y pegue este script de shell (he incluido comentarios que comienzan con #; son solo para que sea más fácil de entender o modificar)
# Get the directory name and go into it - this should be the parent directory
dir=`dirname $1`
cd $dir
# Find all directories one level below
# For each subdirectory, move all ".avi" files to its parent directory,
# then remove the subdirectory and its contents (change avi to any other extension if necessary)
find . ! -path . -type d -maxdepth 1 -exec sh -c '
dir="$0"
mv $dir/*/*/*.avi $dir/..
rm -rf $dir
' {} ';'
Jusi
Jusi
MK
Jusi
Jusi
MK
Jusi
rm -rf
totrash
para sentirme "más seguro". Sin embargo, por alguna razón, procedió a mover archivos .txt y eliminar carpetas de todo mi disco duro, por lo que algo no está del todo bien. ¿ Puedes explicar qué está pasando en elfind
comando? ¿Por qué Hazel da dir $0 en lugar de $1? Además, dado que es solo una carpeta que necesito monitorear, ¿podríamos simplemente codificarla en lugar de usar variables?MK
find
comando busca directorios justo debajo de la carpeta principal; ese es el $0 aquí. En cada uno de esos directorios, elmv
comando va tres niveles más profundo (cada * es un nivel más profundo) y mueve el archivo hacia arriba.MK
Jusi
MK