Script: Organizar de manera automática el Escritorio

He añadido unas modificaciones al script que nos permite organizar las descargas del Escritorio de manera automatica, copiando los archivos que indiquemos a los directorios que indiquemos. Lo ideal seria crear una interface GUI con Python pero lo dejare para mejor ocasión. Aqui el script (organiza.sh):

#!/bin/bash
#--------------------------------------------------------------------
# organiza.sh
#--------------------------------------------------------------------
# Pequeño script para organizar las descargas.
#
# Examina los archivos por su extension y los mueve a las carpetas
# destino que se le indiquen.
#--------------------------------------------------------------------

# Lenguaje (reservado para uso futuro, para poner los textos de acuerdo al lenguaje)
LENGUAJE=$LANG

# Cada 2 minutos (reservado para uso futuro y cron)
TIEMPO_MINUTOS=2
# Renombrar o sobreescribir si existe el fichero destino
RENOMBRAR_SI_EXISTE="si"

# Carpeta Fecha
FECHA=`date +"%d%b"`

# Colores
Black="0;30"
DarkGray="1;30"
Blue="0;34"
LightBlue="1;34"
Green="0;32"
LightGreen="1;32"
Cyan="0;36"
LightCyan="1;36"
Red="0;31"
LightRed="1;31"
Purple="0;35"
LightPurple="1;35"
Brown="0;33"
Yellow="1;33"
LightGray="0;37"
White="1;37"

#-------------------------------------
# color()
# Imprime un texto de color
# @param texto del mensaje
# @param color del texto
#-------------------------------------
color()
{
mensaje="${1}"
color="${2}"
echo -e "\e[${color}m${mensaje}\e[00m"
}

bold()
{
echo -e "\033[1m${1}\033[0m"
}
#---------------------------------

#---------------------------------
# mover()
# Mueve los archivos de origen a destino segun la extension
# @param directorio origen de busqueda
# @param directorio destino donde mover
# @param extension del archivo a mover
#---------------------------------
mover()
{

origen="$1"
destino="$2"
archivos="$3"

bold "=========================================================================================================================="
bold " Moviendo archivos [$archivos] desde [$origen] hasta [$destino] "
bold "=========================================================================================================================="

# Comprobamos si existe el directorio destino, si no existe, lo creamos
if [ ! -d "$destino" ];
then
	echo "El directorio destino [$destino] no existe. Creandolo..."
	mkdir "$destino"
	echo "directorio creado."
fi;

# Recorrer cada uno de los archivos origen

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for archivo in `ls $origen/$archivos`
do
	echo "Encontrado $archivo..."
	# Comprobamos si el archivo ya existe en el destino, si ya existe se mueve pero con otro nombre para no borrar el original
	# para ello le concateno _timestamp
	TIMESTAMP=`date +%s`
	# Me quedo con solo el nombre del archivo
	nombre=`basename "$archivo"`
	# chequeo si existe en destino
	if [ -f "$destino/$nombre" ];
	then
	  color "El archivo ya existe, se renombra con el timestamp..." $DarkGray
	  nombre2="${TIMESTAMP}_${nombre}"
	  #echo $nombre
	  color "* Moviendo archivo [$nombre] a [$destino/$nombre2]..." $DarkGray
	  mv "$origen/$nombre" "$destino/$nombre2"
	else
	  color "Moviendo archivo [$nombre] a [$destino/$nombre]..." $DarkGray
	  mv "$origen/$nombre" "$destino/$nombre"
	fi;

done
IFS=$SAVEIFS
}

#================================================================================
# REGLAS PARA MOVER LOS ARCHIVOS, cambia esto como corresponda segun tu caso.
#================================================================================
# Sintaxis: mover "directorio_origen" "directorio_destino" "extension archivos"
#================================================================================

#=====Imagenes=========
mover "$HOME/Escritorio" "$HOME/Imágenes/$FECHA" "*.gif"
mover "$HOME/Escritorio" "$HOME/Imágenes/$FECHA" "*.jpg"
mover "$HOME/Escritorio" "$HOME/Imágenes/$FECHA" "*.jpeg"
mover "$HOME/Escritorio" "$HOME/Imágenes/$FECHA" "*.png"

#====Descargas=========
mover "$HOME/Escritorio" "$HOME/Descargas/$FECHA" "*.deb"
mover "$HOME/Escritorio" "$HOME/Descargas/$FECHA" "*.zip"
mover "$HOME/Escritorio" "$HOME/Descargas/$FECHA" "*.tar.gz"
mover "$HOME/Escritorio" "$HOME/Descargas/$FECHA" "*.7z"
mover "$HOME/Escritorio" "$HOME/Descargas/$FECHA" "*.rar"
mover "$HOME/Escritorio" "$HOME/Descargas/$FECHA" "*.gz"

#====Documentos=========
mover "$HOME/Escritorio" "$HOME/Documentos/$FECHA" "*.html"
mover "$HOME/Escritorio" "$HOME/Documentos/$FECHA" "*.js"
mover "$HOME/Escritorio" "$HOME/Documentos/$FECHA" "*.pdf"

#
# Si se quiere añadir al crontab para ejecutar cada 2 minutos
#
# crontab -e
# */2 * * * * /usr/bin/organiza.sh
#
# otra opcion es dejarlo en $HOME/.gnome2/nautilus-scripts como "Organizar Escritorio"
#
# Pendiente escribir un interface Python para crear las reglas y ejecutar desde el Panel.
#

exit;

Instalacion:

Varias formas:

* Crear un lanzador del escritorio que apunte al script y añadirlo al panel.
* Dejarlo como antes ejecutandose cada “x” tiempo mediante cron.
* O la que me gusta a mi ahora, copiarlo a $HOME/.gnome2/nautilus-scripts con el nombre “Organizar Escritorio”, asi que cuando quieras mover los archivos basta con seleccionarlo desde Scripts > Organizar Escritorio.

Configuración:

Yo dejo todas las descargas en el Escritorio, que puede no ser vuestro caso, asi que debeis editar el archivo y cambiar la parte última del mismo, justo donde dice:

#=================================================
# REGLAS PARA MOVER LOS ARCHIVOS, cambia esto como corresponda segun tu caso.
#======================================================
# Sintaxis: mover "directorio_origen" "directorio_destino" "extension archivos"
#======================================================

#=====Imagenes=========
mover "$HOME/Escritorio" "$HOME/Imágenes/$FECHA" "*.gif"

Aqui p.ej la regla lo que haria es mover los archivos *.gif desde el Escritorio hasta la carpeta $HOME/Imágenes/18Sep

$FECHA es una variable que va almacenando la fecha actual, asi me permite ir clasificando los ficheros de manera temporal.

Pero podrias poner tus propias reglas, p.ej:

mover "/tmp" "$HOME/Descargas/PDF" "*.pdf"

que moveria todos los archivos /tmp/*.pdf hasta la carpeta “PDF” de Descargas.

12 Respuestas a “Script: Organizar de manera automática el Escritorio”


  1. 1 Josep septiembre 18, 2010 a las 1:41 pm

    Muchas gracias por el script.

  2. 2 iosu septiembre 19, 2010 a las 2:20 am

    muy prectico ese script

  3. 3 Alex octubre 2, 2010 a las 3:47 pm

    Oye gracias por el script, pero me da problemas, no lee los archivos del directorio de origen.

    Esto es lo que me dice al ejecutarlo:

    ls: no se puede acceder a /home/dunnem/Descargas/*.pdf: No existe el archivo o directorio

    El codigo es el siguiente, le quite algunas cosas y comente otras, podrias ayudarme porfavor? :

    #!/bin/bash
    #——————————————————————–
    # organiza.sh
    #——————————————————————–
    # Pequeño script para organizar las descargas.
    #
    # Examina los archivos por su extension y los mueve a las carpetas
    # destino que se le indiquen.
    #——————————————————————–

    # Lenguaje (reservado para uso futuro, para poner los textos de acuerdo al lenguaje)
    LENGUAJE=$LANG

    # Cada 2 minutos (reservado para uso futuro y cron)
    TIEMPO_MINUTOS=2
    # Renombrar o sobreescribir si existe el fichero destino
    #RENOMBRAR_SI_EXISTE=”si”

    # Carpeta Fecha
    FECHA=`date +”%d%b”`

    #————————————-
    # color()
    # Imprime un texto de color
    # @param texto del mensaje
    # @param color del texto
    #————————————-
    #color()
    #{
    #mensaje=”${1}”
    #color=”${2}”
    #echo “${mensaje}”
    #}

    #bold()
    #{
    #echo “${1}”
    #}
    #———————————

    #———————————
    # mover()
    # Mueve los archivos de origen a destino segun la extension
    # @param directorio origen de busqueda
    # @param directorio destino donde mover
    # @param extension del archivo a mover
    #———————————
    mover()
    {

    origen=”$HOME/Descargas”
    destino=”$1″
    archivos=”$2″

    #echo “”
    #echo “”
    #echo “=========================================================================================”
    #echo ” Moviendo archivos [$archivos] a [$destino] ”
    #echo “=========================================================================================”

    # Comprobamos si existe el directorio destino, si no existe, lo creamos
    if [ ! -d "$destino" ];
    then
    echo “El directorio destino [$destino] no existe.”
    echo “”
    echo “Creandolo……… Directorio Creado.”
    mkdir “$destino”
    echo “”
    fi;

    # Recorrer cada uno de los archivos origen
    SAVEIFS=$IFS
    IFS=$(echo -en “\n\b”)
    for archivo in `ls “$origen/$archivos”`
    do
    echo “\n Encontrado $archivo…”
    # Comprobamos si el archivo ya existe en el destino, si existe se mueve con otro nombre
    # para ello le concateno _timestamp
    TIMESTAMP=`date +%s`

    # Me quedo con solo el nombre del archivo
    nombre=`basename “$archivo”`

    # chequeo si existe en destino
    if [ -f "$destino/$nombre" ];
    then
    echo “\n El archivo ya existe, se renombra con el timestamp…”
    nombre2=”${TIMESTAMP}_${nombre}”
    echo ” * Moviendo archivo [$nombre] a [$destino]…”
    mv “$origen/$nombre” “$destino/$nombre2″

    else
    echo ” Moviendo archivo [$nombre] a [$destino]…”
    mv “$origen/$nombre” “$destino/$nombre”
    fi;

    done
    IFS=$SAVEIFS
    }

    #================================================================================
    # REGLAS PARA MOVER LOS ARCHIVOS, cambia esto como corresponda segun tu caso.
    #================================================================================
    # Sintaxis: mover “directorio_origen” “directorio_destino” “extension archivos”
    #================================================================================

    #=====Imagenes=========
    #mover “$HOME/Imágenes/” “*.gif”
    #mover “$HOME/Imágenes/” “*.jpg”
    #mover “$HOME/Imágenes/” “*.jpeg”
    #mover “$HOME/Imágenes/” “*.png”
    mover “$HOME/S_O” “*.iso”

    #====Documentos=========
    #mover “$HOME/Documentos/$FECHA” “*.html”
    #mover “$HOME/Documentos/$FECHA” “*.js”
    mover “$HOME/Documentos” “*.pdf”
    mover “$HOME/Música/Zueltos” “*.mp3″

    #
    # Si se quiere añadir al crontab para ejecutar cada 2 minutos
    #
    # crontab -e
    # */2 * * * * /usr/bin/organiza.sh
    #
    # otra opcion es dejarlo en $HOME/.gnome2/nautilus-scripts como “Organizar Escritorio”
    #
    # Pendiente escribir un interface Python para crear las reglas y ejecutar desde el Panel.
    #

    exit;

  4. 4 superpiwi octubre 2, 2010 a las 3:54 pm

    No problem

    ls: no se puede acceder a /home/dunnem/Descargas/*.pdf: No existe el archivo o directorio

    es que no encuentra ningun archivo .pdf para mover en tu directorio origen /home/dunnem/Descargas

    pero deberia continuar chequeando el resto de extensiones.
    ese mensaje te lo va a mostrar siempre que intente mover una extension, p.ej .pdf en este caso, pero no encuentre ningun archivo de ese tipo en el directorio origen.

  5. 6 Alex octubre 2, 2010 a las 4:01 pm

    Aclaro que si le di permisos de ejecucion.

    Y el error es el mismo para los 3 tipos de archivos descomentados, es el sig:

    ” ls: no se puede acceder a /home/dunnem/Descargas/*.iso: No existe el archivo o directorio
    ls: no se puede acceder a /home/dunnem/Descargas/*.pdf: No existe el archivo o directorio
    ls: no se puede acceder a /home/dunnem/Descargas/*.mp3: No existe el archivo o directorio ”

    El directorio de origen lo manejé como en tu script original y de todas las formas que se me ocurrieron, pero siempre me devolvia el error anterior.

  6. 7 superpiwi octubre 2, 2010 a las 4:13 pm

    entonces sólo se me ocurre que no existe ese directorio o esta pero bailando alguna letra, por la sensibilidad a mayusculas y minusculas.

    como en el script tienes:

    origen=”$HOME/Descargas”

    entiendo que tu user es: /home/dunnem
    y que dentro deberia existir una carpeta llamada “Descargas”

    prueba a hacer desde consola:

    $ ls -l /home/dunnem/Descargas/*.pdf , si te devuelve el mismo error revisa la ruta, que sea correcta, pq si existe la carpeta, tienes pdfs dentro y eres el propietario, deberia sacarte un listado de archivos.

  7. 8 superpiwi octubre 2, 2010 a las 4:15 pm

    pero vamos ese error, te lo va a sacar siempre si la carpeta existe pero no encuentra archivos del tipo especificado.

    ██ jose @ ~
    ██ 18:14:09 $ ls $HOME/Escritorio/*.jpg
    ls: no se puede acceder a /home/jose/Escritorio/*.jpg: No existe el fichero ó directorio

    ██ jose @ ~
    ██ 18:14:20 $ ls $HOME/Escritorio/*.png
    /home/jose/Escritorio/mini.png

  8. 9 Alex octubre 3, 2010 a las 3:19 am

    Hola otra vez Jose, disculpa mi insistencia pero el problema persiste.

    Hice lo siguiente en la terminal:

    dunnem@nn:~$ ls /home/dunnem/Descargas/*.pdf
    /home/dunnem/Descargas/CAP2A03BTHP0137.pdf
    /home/dunnem/Descargas/Como-crear-Temas-para-Metacity-Espa__ol-Lionel-Bino.pdf

    dunnem@nn:~$ ls /home/dunnem/Descargas/*.mp3
    /home/dunnem/Descargas/00. Be By Myself.mp3
    /home/dunnem/Descargas/00. Big Pimpin.mp3
    /home/dunnem/Descargas/00. Flo-Rida Feat. David Guetta – Club Can’t Handle Me.mp3

    Y ya intente dejando todo tipo de archivos en Descargas y descomentandolos del script pero el error es el mismo para todos.

    Estoy en verdad confundido con esto, porque ya intente copiar la ruta desde nautilus por si la eescribia mal; tambien intente con cd /…/ hasta llegar al directorio y nada me funciona.

    • 10 superpiwi octubre 3, 2010 a las 10:08 am

      muy raro, bueno la parte mas importante del script es:

      for archivo in `ls $origen/$archivos`
      do
      # Aqui cosas a hacer por cada archivo
      echo “archivo es $archivo”
      done

      esto un bucle que ejecuta un ls y por cada archivo que devuelve lo imprime

      prueba a hacer un script a parte con esto:

      for archivo in `ls /home/dunnem/Descargas/*.pdf`
      do
      echo “archivo es $archivo”
      done

      como tienes:

      dunnem@nn:~$ ls /home/dunnem/Descargas/*.pdf
      /home/dunnem/Descargas/CAP2A03BTHP0137.pdf
      /home/dunnem/Descargas/Como-crear-Temas-para-Metacity-Espa__ol-Lionel-Bino.pdf

      deberia sacarte

      archivo es /home/dunnem/Descargas/CAP2A03BTHP0137.pdf
      archivo es /home/dunnem/Descargas/Como-crear-Temas-para-Metacity-Espa__ol-Lionel-Bino.pdf

      si eso falla ya me doy por vencido, o no hay nada, o la ruta no la encuentra o el bash esta corrompido.


  1. 1 WolfSorter: Controla y manten ordenadas las descargas de tu Escritorio « Ubuntu Life Trackback en enero 8, 2011 a las 11:47 am
  2. 2 WolfSorter: Controla y manten ordenadas las descargas de tu Escritorio | Ayuda Linux Trackback en enero 8, 2011 a las 6:15 pm

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s





The next version of Ubuntu is coming soon




¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

 

septiembre 2010
L M X J V S D
« ago   oct »
 12345
6789101112
13141516171819
20212223242526
27282930  

Blog Stats

  • 21,382,821 hits

Seguir

Get every new post delivered to your Inbox.

Únete a otros 675 seguidores