15 jul 2008

Mover a .. y Copiar a .. en Ubuntu

Enchulando Ubuntu 8.04....

Resulta que nautilus no trae en el menú las opciones mover a, copiar a , al dar click con el botón derecho del mouse..



manos a la obra y enchulemos nuestro Ubuntu

1) Instalamos nautilus-actions-config

apt-get install nautilus-actions-config

2) Abrimos el programa un editor de Texto , en mi caso gedit que trae el entorno Gnome

3) Copiamos estos dos Script , cada uno en un archivo nuevo , y lo guardamos en /usr/bin
yo los llame nautilus_copyto y nautilus_maoveto

nautilus_Copyto
#! /bin/sh
# nautilus_copy_to
################################################## ########################
# Shellscript: Add CopyTo function to Nautilus
# Version : 1.01-2
# Author : Tony Whelan
# Modificado - optimizado : Dugar Agamez (2008-07-14)
# Traducido : Español (Dugar Agamez - Colombia)
# Date : 2007-04-24
# Category : File Utilities
################################################## ########################
# Description
# Provide (via Nautilus Actions Configuration) a right-click menu option
# to Copy selected files to another location via a file dialog
# For simplicity, this version only allows copying files, not folders
################################################## ########################
# This version improves the extraction of filename from pathname
# and adds quotes around $i for correct processing of filenames containing spaces
# Note that this script will not copy files from remote machines (SMB)
# The Nautilus Actions Confuguration tool should only allow local files to present this script
################################################# #########################
#Actualizacion (2008-07-14)
#correccion en la sintesis
#mensaje de Archivos copiados
#mejoramiento de la pregunta de sobreescribir archivo
#barra de proceso del copiado, con porcentages y nombre del archivo en tiempo real
#
#
# Define variables
PN="Nautilus CopyTo" # program name
VER='1.01-2'
errmsg1="Se necesitan uno o mas archivos como parametro de entrada"
errmsg2="Este Scrip esta diseñado para ser llamado por Nautilus"
errmsg3="El archivo no se puede copiar en el destino"
copied=0 # Count of files copied
per=0 # porcentage de la copia
skipped=0 # Count of files skipped
dest="" # destination pathname
errcount=0 # count of any errors returned by copy operation
curfile="" # name of file currently being processed (without path)
s_size="" # file size of source file
s_date="" # date/time stamp of source file
t_size="" # file size of target file
t_date="" # date/time stamp of target file


###############################
# Define subroutines

# Display usage message and exit script when user presses OK
Usage () {
zenity --error --title "$PN $VER" --text "$errmsg1 $errmsg2"
exit 1 # return code of 1 signifies script failed to complete action
}

# Display supplied message text (one parameter) and return on press of OK button
msg () {
zenity --info --title "$PN $VER" --text "$1"
}

# Display message showing target filename, and size/datestamps, and prompt to over-write
okwrite (){
# On return, the $? variable is 0 if you press Ok and 1 if you press Cancel.
response=`zenity --question --title "$PN $VER - Archivo Existente" --text "¿Desea sobrescribir el archivo $1?
\nArchivo Existente:\n $2 bytes, Modificado $3\nSobrescribir con:\n $4 bytes, Modificado $5"`
}

###############################

# If no parameters supplied, display usage message and exit
[ $# -lt 1 ] && Usage

# Display the CopyTo dialog box for user to select destination
# Note the single quotes in first code line below are backwards single quotes!
# These redirect standard output to the environment variable 'dest'
dest=`zenity --file-selection --directory --title "Seleccione el directorio destino"`

# if variable returned is not a valid folder name, user made no selection so abort
[ ! -d "$dest" ] && exit 1

# Process the parameters
(for i in $*
do
# Get the filename without the path
# use double quotes around $i to handle filenames with spaces
curfile=`basename "$i"`

# Does the file exist at the destination?
if [ -f "$dest/$curfile" ] # if exist
then
# get current source file's size and date/time details
s_date=`find "$i" -printf "%Ta %Td %Tb %TY %TH:%TM:%TS"`
s_size=`find "$i" -printf "%s"`
# get destination file size and date/time details
t_date=`find "$dest/$curfile" -printf "%Ta %Td %Tb %TY %TH:%TM:%TS"`
t_size=`find "$dest/$curfile" -printf "%s"`
# prompt user whether to overwrite target with source
okwrite "$curfile" "$t_size" "$t_date" "$s_size" "$s_date"

if test `expr $?` -gt 0
then
skipped=`expr $skipped + 1`
continue
fi
fi
# copy the file preserving the source file's attributes where possible
echo "#"$curfile

if cp -pr "$i" "$dest/$curfile"
then
copied=`expr $copied + 1`
per=`expr $copied \* 100 \/ $#`
echo $per
else
msg "Lo siento, no se puede copiar $curfile a ${dest}. No tenienes los permisos necesarios"
fi
sleep 0.1 # si decea puede omitir esta linea solo permite visualizar mejor el efecto grafico

done)|zenity --progress --percentage=0 --auto-close --title "Copiando..." --text "Archivo"

exit 0



Nautilus_Moveto
#! /bin/sh
# nautilus_move_to
################################################## ########################
# Shellscript: Add MoveTo function to Nautilus
# Version : 1.01-2
# Author : Tony Whelan
# Modificado - optimizado : Dugar Agamez (2008-07-14)
# Traducido : Español (Dugar Agamez - Colombia)
# Date : 2007-04-24
# Category : File Utilities
################################################## ########################
# Description
# Provide (via Nautilus Actions Configuration) a right-click menu option
# to Move selected files to another location via a file dialog
# For simplicity, this version only allows moving files, not folders
################################################## ########################
# This version improves the extraction of filename from pathname
# and adds quotes around $i for correct processing of filenames containing spaces
# Note that this script will not copy files from remote machines (SMB)
# The Nautilus Actions Confuguration tool should only allow local files to present this script
################################################### #######################
#Actualizacion (2008-07-14)
#correccion en la sintesis
#mensaje de Archivos Movidos
#mejoramiento de la pregunta de sobreescribir archivo
#barra de proceso del copiado, con porcentages y nombre del archivo en tiempo real
#
#
# Define variables
PN="Nautilus CopyTo" # program name
VER='1.01-2'
errmsg1="Se necesitan uno o mas archivos como parametro de entrada"
errmsg2="Este Scrip esta diseñado para ser llamado por Nautilus"
errmsg3="El archivo no se puede mover al destino"
copied=0 # Count of files copied
per=0 # porcentage de la copia
skipped=0 # Count of files skipped
dest="" # destination pathname
errcount=0 # count of any errors returned by copy operation
curfile="" # name of file currently being processed (without path)
s_size="" # file size of source file
s_date="" # date/time stamp of source file
t_size="" # file size of target file
t_date="" # date/time stamp of target file


###############################
# Define subroutines

# Display usage message and exit script when user presses OK
Usage () {
zenity --error --title "$PN $VER" --text "$errmsg1 $errmsg2"
exit 1 # return code of 1 signifies script failed to complete action
}

# Display supplied message text (one parameter) and return on press of OK button
msg () {
zenity --info --title "$PN $VER" --text "$1"
}

# Display message showing target filename, and size/datestamps, and prompt to over-write
okwrite (){
# On return, the $? variable is 0 if you press Ok and 1 if you press Cancel.
response=`zenity --question --title "$PN $VER - Archivo Existente" --text "¿Desea sobrescribir el archivo $1?
\nArchivo Existente:\n $2 bytes, Modificado $3\nSobrescribir con:\n $4 bytes, Modificado $5"`
}

###############################

# If no parameters supplied, display usage message and exit
[ $# -lt 1 ] && Usage

# Display the CopyTo dialog box for user to select destination
# Note the single quotes in first code line below are backwards single quotes!
# These redirect standard output to the environment variable 'dest'
dest=`zenity --file-selection --directory --title "Seleccione el directorio destino"`

# if variable returned is not a valid folder name, user made no selection so abort
[ ! -d "$dest" ] && exit 1

# Process the parameters
(for i in $*
do
# Get the filename without the path
# use double quotes around $i to handle filenames with spaces
curfile=`basename "$i"`

# Does the file exist at the destination?
if [ -f "$dest/$curfile" ] # if exist
then
# get current source file's size and date/time details
s_date=`find "$i" -printf "%Ta %Td %Tb %TY %TH:%TM:%TS"`
s_size=`find "$i" -printf "%s"`
# get destination file size and date/time details
t_date=`find "$dest/$curfile" -printf "%Ta %Td %Tb %TY %TH:%TM:%TS"`
t_size=`find "$dest/$curfile" -printf "%s"`
# prompt user whether to overwrite target with source
okwrite "$curfile" "$t_size" "$t_date" "$s_size" "$s_date"

if test `expr $?` -gt 0
then
skipped=`expr $skipped + 1`
continue
fi
fi
# copy the file preserving the source file's attributes where possible
echo "#"$curfile

if mv "$i" "$dest/$curfile"
then
copied=`expr $copied + 1`
per=`expr $copied \* 100 \/ $#`
echo $per
else
msg "Lo siento, no se puede mover $curfile a ${dest}. No tenienes los permisos necesarios"
fi
sleep 0.1 # si decea puede omitir esta linea solo permite visualizar mejor el efecto grafico

done)|zenity --progress --percentage=0 --auto-close --title "Moviendo..." --text "Archivo"

exit 0



descarga de los script (aqui)
Script original es de Tony Whelan , traducido y mejorado por mi.
/usr/bin/nautilus_copyto
/usr/bin/nautilus_moveto

4) Abrimos Configuraciones de acciones de nautilus
el programa el se encuentra en Sistema/Preferencia/ se llama Configuración de acciones de Nautilus

5) Damos en y configuramos de la siguiente manera para nautilus_copyto,
en icono puedes escoger el que mas te guste o valla con tu tema actual, el el cuadro consejo puedes colocar cualquier mensaje es es que aparece en la bara de estado




































damos click en y luego presionamos nuevamente





















le damos en
queda con los dos menu añadido, para que nautilus y los script funcionen correctamente deberemos reiniciar a nautilus , en la consola de comandos ejecutamos

killall nautilus

Esto nos cierra y abre nuevamente nuestro nautilus


Puedes copiar y mover arvhivos y/o carpetas, tambin grupos de estos,


















Listo ya tenemos nuestros script funcionando....

Actualización :

para que puedas copiar archivos/carpetas que contengan los nombres con espacios, ejemplo : la playa.jpg , hay que cambiar los separadores de argumentos que por defecto es el espacio, por otro.
agregar en cada uno de los archivos

#! /bin/sh

IFS='ç' # puedes agregar cualquier carácter que no uses , puede ser coma , ó \ ó ^ etc

# nautilus_copy_to

.
.

No hay comentarios.:

Publicar un comentario