Después de un tiempo sin hacer un post, y 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 juego varias veces.
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:
Luego vino hacer el script:
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:
PD: Este post lo publiqué anteriormente en Taringa, sección Linux/GNU
@abelnicolas1976, I gave you a vote!
If you follow me, I will also follow you in return!
Enjoy some !popcorn courtesy of @nextgencrypto!
Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://www.taringa.net/posts/linux/20231378/Cortar-pegar-archivos-de-distintas-carpetas-sin-tocar-el-tec.html