Cortar y pegar mediante un script y sin teclado

 

Tal como lo diría el título, hoy les traigo un script que surgió a partir de una "necesidad" particular:

Tenía que bajar un pack de roms de Sega Genesis (entre otras) y como suele pasar, tenemos una carpeta para cada juego, pero el hecho es que dentro de cada una hay entre 2 y 5 roms (una para cada zona) y no le veo mucho sentido tener repetido un mismo

 DeepinScreenshot Seleccionar área 20190126142558

 

Un opción hubiese sido hacer con comando find y que mueva las roms a una misma carpeta -lo que no quería- o bien usar comandos con expresiones regulares encadenadas o entubadas (pero tenía fiaca de volver a repasar como eran algunos conceptos y los nombres de los juegos complicarían aún más las cosas) y claro, quedaba entrar carpeta por carpeta para hacer cut/paste de una rom de cada una, lo hubiese hecho si no tuviera más de 750 carpetas para hacer esa rutina.

Y pensando en lo último se me ocurrió usar una herramienta bastante buena llamada Xdotool, como lo que tenía que hacer era muy repetitivo este programa podía hacer lo suyo desde un script de Bash.
Xdotool se encarga de hacer tecleos, combinaciones de teclas, mover el puntero del mouse y hacer clicks de forma automática.

Primero anoté que teclas presionaba para marcar la carpeta, entrar, etc, tengamos en cuenta que yo usé Thunar (el gestor de archivos de Xfce) pero en los demás sería similar:

DeepinScreenshot Seleccionar área 20190126142641

Luego vino hacer el script:

DeepinScreenshot Seleccionar área 20190126142651

Aquí lo dejo para que lo copien si les hace falta:

#!/bin/bash
CANTIDAD_DE_CARPETAS="158"

sleep 5
DELAY="0.5"
clear
for i in `seq 0 $CANTIDAD_DE_CARPETAS`
do
    sleep 2
    xdotool key Down
    sleep $DELAY
    xdotool key Up
    sleep $DELAY
    xdotool key Return
    sleep $DELAY
    xdotool key Down
    sleep $DELAY
    xdotool key ctrl+x
    sleep $DELAY
    xdotool key alt+Up
    sleep $DELAY
    xdotool key ctrl+v
    sleep $DELAY
    xdotool key shift+Delete
    sleep $DELAY
    xdotool key space

    echo "Carpeta $i de $CANTIDAD_DE_CARPETAS, esperando 2 segundos..."
done

exit


Luego lo guardan con el nombre mover_roms.sh o cualquier otro que les guste, abren una consola y le dan los permisos de ejecución:

 
chmod +x mover_roms.sh
y lo ejecutan
./mover_roms.sh


Aquí lo tenemos en acción:





Lo + Leído

mastodon latinlinux
 
diaspora latinlinux
 
telegram latinlinux