Introducción a Terminal y Línea de Comandos 2016

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

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:

Screenshot from 2017-10-09 14-31-51.png

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.

<h2>Creando el script</h2>

Para este proposito utilizaremos el comando find, buscando todos los screenshots en Pictures:

find $HOME/Pictures -type f -name 'Screenshot\ from*.png'

Resultado:
Screenshot from 2017-10-09 14-48-30.png

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:
Screenshot from 2017-10-09 15-43-15.png

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

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados