Ya que el profesor hizo mención de este ejemplo me dí a la tarea de realizarlo.
<h2>El problema</h2>La tarea consiste en mover los screenshots viejos a otro lugar para no acumular miles de archivos y arruinar nuestra experiencia al querer hacer uso de los mas actuales buscando entre cientos o miles de archivos.
En mi caso utilizo Fedora 25 y al presionar la tecla Impr Pant se guarda un screenshot en mi carpeta de usuario llamada Pictures como se puede ver en la imagen:

Ya que lo unico que cambia en el nombre del archivo es la fecha y la hora, por lo que podré utilizar la cadena Screenshot from para identificar los screenshots.
<h2>¿Como lo haremos?</h2>Crearemos un script con los comandos que aprendimos en el curso, esl script buscara y movera los archivos que tengan mas de 24 horas de haber sido modificados.
Vamos a utilizar CRON para hacer esta tarea automaticamente todos los dias a la media noche.
Para este proposito utilizaremos el comando find, buscando todos los screenshots en Pictures:
find $HOME/Pictures -type f -name 'Screenshot\ from*.png'
Resultado:
Ahora filtraremos los archivos que NO corresponen al dia de hoy utilizando la bandera -mtime:
find $HOME/Pictures -type f -name 'Screenshot*.png' -mtime +1
Entre los argumentos que puede recibir -mtime estan num; +num; -num; siendo num un numero entero, los explico:
- Contando a partir del la hora actual 0 representa el dia actual(las ultimas 24 horas)
- -mtime 1 mostrará todos los archivos solo de ese día en este caso los de ayer, si usaramos un 0 serian los archivos de hoy
- -mtime +1 mostrará los archivos que tengan más de 2 días, si se usa +0 serian todos menos los de hoy
- -mtime -1 mostrará los archivos que tengan menos de 2 dias osea los de 1 dia los de hoy, -0 serian los que tengan menos de 1 dia, esto nos llevaria al presente inmediato en el que vivimos y tendriamos cero resultados
Como has podido deducir utilizaremos -mtime +0 para obtener los archivos que tengan mas de 1 día
find $HOME/Pictures -type f -name 'Screenshot*.png' -mtime +0
Como puedes ver los de 2017-10-09 ya no aparecen:
Ahora vamos a agregar la bandera -exec que nos permite ejecutar un comando con cada resultado y utilizaremos mv para moverlos:
find $HOME/Pictures -type f -name 'Screenshot*.png' ! -mtime +0 -exec mv {} $HOME/Pictures/old_screenshots/ \;
Perfecto ahora crearemos el script como un archivo oculto(con un punto al inicio del nombre) en nuestro home:
vim ~/.mover_screenshots.sh
Ahora en vim presionamos la tecla i para insertar y editamos, nos deberia quedar asi:
#!/bin/bash
mkdir -p $HOME/Pictures/old_screenshots
find $HOME/Pictures -type f -name 'Screenshot*.png' ! -mtime +0 -exec mv {} $HOME/Pictures/old_screenshots/ \;
mkdir -p creará la carpeta en caso de no existir y si ya existe la dejara asi, con esto aseguramos nuestra tarea se ejecute sin problemas, asi como puedes observar moveremos todos los screenshots viejos a una carpeta llamada old_screenshots en Pictures
Ahora presionamos ESC luego presionamos la tecla : (dos puntos) y luego la x y damos enter con esto guardamos y salimos de vi / vim.
<h2>CRON</h2>Llego el momento de programar la ejecucion repetitiva de nuestro script, para esto escribimos y ejecutamos:
crontab -e
Presionamos la tecla i Editamos de tal manera que nuestro script se ejecute a la media noche (o la hora de tu preferencia) :
0 0 * * * $HOME/.mover_screenshots.sh
Ahora presionamos ESC luego presionamos la tecla : (dos puntos) y luego la x y damos enter con esto guardamos y salimos de vi / vim.
Ahora todos los dias a las 0 horas y 0 minutos(media noche) se ejecutará nuestro script .mover_screenshots.sh que buscara todos los screenshots que tengan mas de 24 horas de haber sido modificados y los movera a la carpeta ~/Pictures/old_screenshots
Introducción a Terminal y Línea de Comandos 2016