pregunta difícil,,,
Volver al foro (Usando Guadalinex V7)-
Hola,,,
ando necesitando lo siguiente:
creo una carpeta, en la que no importe que los ficheros que vaya echando ahí se llamen igual (tengan el mismo nombre), no sé si existe eso como carpeta o como sistema de archivos, si no lo hubiera, quizá una opción fuera un script que al añadir un fichero a dicha carpeta, añadiera al nombre del fichero porejemplo la fecha y hora de creación,,, de esa forma,,, no importaría que el nombre original fuera idéntico.... ¿me explico?
de qué forma se podría implementar esto?
gracias
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
Una carpeta que contenga archivos que se llamen igual lo veo más que complicao porque el mismo sistema de ficheros no te lo va a permitir. Si te da igual cómo se llamen, la solución más sencilla es que los renombres masivamente de un tirón antes o después de copiar cada tanda. Para eso sí que hay aplicaciones, entre otras: purrr, pyrenamer, thunar lleva uno incorporado, gprename...
......-
Te puede servir este script http://gnome-look.org/content/show.php/nautilus-renamer?content=87601
mi blog: http://hatteras.wordpress.com/-
Gracias hatteras,,, es justo lo que buscaba...........estaba ya pensando en cómo hacerlo,,,,,,,
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
Lo bueno es que con Sistema-Preferencias-configuración de acciones de nautilus, se puede añadir un icono a la barra del nautilus y usarlo fácilmente: se seleccionan los archivos que quieras renombrar de forma masiva, y luego haces click en el nuevo icono, y se abre la ventana de renamer.py en la que puedes renombrar de forma masiva varios archivos. En http://foro-ubuntu-guia.963965.n3.nabble.com/Renombrar-varios-archivos-seleccionados-Solucionado-tp1732109p1732109.html hay imágenes de ésto.
La otra forma es instalar el renamer en /home/usuario/.gnome2/nautilus-scripts y seleccionar los archivos que quieras renombrar y con el botón secundario del ratón: Scripts -> renamer
mi blog: http://hatteras.wordpress.com/-
Bueno, mi uso es más pequeño,, está pensado para un sólo archivo,, lo marco, boton derecho del ratón, nautilus-script, al nombre (antes de la extension) le agrego la fecha, y así puedo almacenarlo en su carpeta correspiente, sin pisar archivos que de otra forma se llamarían igual,,,
había encontrado soluciones (pyrenamer) bastante completas y potentes, pero excesivas para lo que yo necesitaba: necesito guardar ficheros, por temáticas,, en una carpeta determinada,,, que de otra forma como digo, se llamarían igual,, y me borrarían las versiones antiguas,,,, de esta forma, añadido al nombre la fecha, estoy guardando "versiones" de ficheros,, para cuando en el futuro los necesite. y a golpe de ratón (script de nautilus).
muy buen script,,,
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
voy a poner algo que no aporta nada, pero en bash y en pseudocódigo podría ser algo así
cp archivo destino
if archivo == destino/archivo
entonces cp archivo (diamesano)archivo
entonces cp (diamesano)archivo destino
en caso contrario
cp archivo destino
-
Creo que te podría venir bien un programa que te escaneara primero si tienes archivos repetidos (no por su nombre, si no por su contenido), así de un plumazo (si los tienes, claro) te puedes quitar mucho trabajo de organización. Te recomiendo fdupes, que es de consola pero es el más rápido del planeta.
(solo para ver un resumen de archivos repetidos) fdupes -r -S -m /carpeta
(para borrar los repetidos) fdupes -r -d -N /carpeta/que/sea
Y si quieres algo visual, entonces fslint no está mal.
......-
gracias por los dos últimos comentarios,, que son aportes interesantes,, pero dado que hablo de archivos de tamaño menor a 1mega, cumple bien la solución que me dió hatteras,,, es perfecta,,,
lo que sí me gustaría aprovechar,, es a partir de estos dos últimos comentarios,, crear algo,, que no caiga en saco roto (a mí me excede programarlo):
el planteo es: hacer un script (aunque por ahora solo sea en seudocodigo), para dotar a una carpeta (directorio) de la funcionalidad que mencioné al principio del post, y que supone una extralimitación al sistema de archivos,,,: una carpeta tipo baul, en la que al llevar un fichero (arrastrar), añada al final del nombre -antes de la extensión- la cadena string del valor date de su creación y el string del valor hora,,lo que culmina agregándole la extensión al archivo,,,de esta forma ese directorio, se saltaría las normas -limitaciones- del sistema de ficheros -en cierto sentido-, y permite tener instantáneas o versiones de los archivos que decidamos guardar ahí... también la rutina podría contener la comprobración de suma para no repetirlos,,, pero en mi opinión esto es perjudicial: ya que hablo de ficheros de tamaño no excesivo,,, tiene más valor el guardar la instantánea del fichero -como prueba- que la no duplicidad. aunque sería una opción a elegir -configurable al gusto-. como configurable al gusto podría ser también - que al hacer el guardado, si el usuario lo desea,, que pase a minusculas el nombre (menos la primera: en mayusculas), que sustituya los espacios por guiones medios y que quite caracteres raros.
¿alguien se anima?
añado: pensando en lo de evitar la duplicidad de archivos,,, valdría tenerlo en cuenta siempre que se cree con el nombre que digo no el archivo, sino un enlace blando al archivo original.
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
Mira si te sirve este otro script. http://gnomefiles.org/content/show.php/copy-file-as-backup?content=134978
-
Hola Sanatas,,
el script ese va en la línea,,, aunque es demasiado directo,,,
le falta desarrollo: traduccion a otros lenguajes, posibilidad de configuracion mediante fichero, paquete .deb, un .log con las operaciones que va realizando,
como digo, opino que le falta desarrollo,
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
Bueno, he retocado algo el script, y ahora me funciona mejor,, para lo que yo quiero.
le sigue faltando generación de log con las operaciones que va realizando,, y un desarrollo a un nivel mayor,,, pero bueno..
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
¿ En que sentido has modificado el script - supongo que te refieres al script de gnomefiles - ? ¿ puedes poner en este foro como te ha quedado y que hace tu modificación ?
El script de gnomefiles a mi solo me crea el archivo backup de un solo archivo, aunque elija varios. Si me creara un archivo backup de cada uno de los archivos que selecciono a la vez estaría bastante bien para mis necesidades, pero como no es así, de momento prefiero seguir con el script nautilus-renamer
mi blog: http://hatteras.wordpress.com/-
Hola hatteras,, como dije,, tu recomendación del nautilus-renamer,, es justamente lo que buscaba,,,,
Después ha surgido lo de el script ese de gnomefiles,,,,,, los cambios que he hecho han sido varios: en vez de "cp -p" uso "mv": yo no quiero un fichero más,, yo quiero el fichero que estoy seleccionando me lo prepare (cambio-de-nombre) para que "quepa" en mi "baul".
Otro cambio ha sido la estructura del nombre,,, por defecto añadía año.mes.dia.version,,,,yo lo he cambiado: ahora añade: -dia-mes(3primeras iniciales)-año-hm(horaminuto)
como yo lo quiero para un fichero solo, a mí me funciona bien,,,a ver,, el uso es el siguiente: tengo una estructura bastante ordenada de carpetas para guardar archivos,,,,,,,,,, pero en principio todos los archivos que entran empiezan quedándose en el escritorio,,, en la pantalla principal,,,cuando ya lo he leído/visto/oído/,o me falta sitio en la pantalla:,,,,,,,o bien lo borro si es intrascendente,,,, o bien lo almaceno en esa esctructura de carpetas,,,,,:: antes de ello,,,, le cambio el nombre:: le añado fecha y hora al nombre,, con objeto de que no pueda pisar o ser pisado por ningun otro fichero.
lo que comentas de que no has podido hacerlo funcionar para seleccion de varios ficheros,,,: es por ello que dije que le faltaba desarrollo,,,,creo que empezaron,,, y lo han dejado a medias....
ahora mismo los dos script me funcionan con el mismo resultado.........aunque el de gnomefiles es mucho más rápido y directo
si supiera (en bash) cómo añadir una línea de texto a un fichero .log,,, se lo incluiría al script,,, y quedaría mucho mejor.
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............ -
Hola hatteras,, como dije,, tu recomendación del nautilus-renamer,, es justamente lo que buscaba,,,,
Después ha surgido lo de el script ese de gnomefiles,,,,,, los cambios que he hecho han sido varios: en vez de "cp -p" uso "mv": yo no quiero un fichero más,, yo quiero el fichero que estoy seleccionando me lo prepare (cambio-de-nombre) para que "quepa" en mi "baul".
Otro cambio ha sido la estructura del nombre,,, por defecto añadía año.mes.dia.version,,,,yo lo he cambiado: ahora añade: -dia-mes(3primeras iniciales)-año-hm(horaminuto)
como yo lo quiero para un fichero solo, a mí me funciona bien,,,a ver,, el uso es el siguiente: tengo una estructura bastante ordenada de carpetas para guardar archivos,,,,,,,,,, pero en principio todos los archivos que entran empiezan quedándose en el escritorio,,, en la pantalla principal,,,cuando ya lo he leído/visto/oído/,o me falta sitio en la pantalla:,,,,,,,o bien lo borro si es intrascendente,,,, o bien lo almaceno en esa esctructura de carpetas,,,,,:: antes de ello,,,, le cambio el nombre:: le añado fecha y hora al nombre,, con objeto de que no pueda pisar o ser pisado por ningun otro fichero.
lo que comentas de que no has podido hacerlo funcionar para seleccion de varios ficheros,,,: es por ello que dije que le faltaba desarrollo,,,,creo que empezaron,,, y lo han dejado a medias....
ahora mismo los dos script me funcionan con el mismo resultado.........aunque el de gnomefiles es mucho más rápido y directo
si supiera (en bash) cómo añadir una línea de texto a un fichero .log,,, se lo incluiría al script,,, y quedaría mucho mejor.
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
Para insertar una linea de texto al final de un fichero tienes que hacer lo siguiente: echo "lo que vas insertar" >> archivo.log Pon aquí el script para que podamos echarte una mano.
-
Bueno,, paso a poner el script,, donde se verá las pocas modificaciones que yo le he hecho......para mí funciona (con un archivo),, --no lo he comprobado con más de uno a la vez-- yo lo tengo en la carpeta nautilus-script.....:
# Nombre: Fichero-a-Version--renombra (sh)
# ===================================================
#!/bin/bash
#Title=copy-file-as-backup
#Title[es]=renombra--copia-de-seguridad-versionitis--instantaneas
#==============================================================================
# copy-file-as-backup
#
# author : SLK
# version : v2010121501
# license : Distributed under the terms of GNU GPL version 2 or later
#
#==============================================================================
#
# description :
# nautilus-script :
# creates a backup copy in the same directory, uses date and increments
# number. keeps extension.
#
# informations :
# - a script for use (only) with Nautilus.
# - to use, copy to your ${HOME}/.gnome2/nautilus-scripts/ directory.
#
# WARNINGS :
# - this script must be executable.
# - package "zenity" must be installed ???? zenity no lo veo que haga falta
#
#==============================================================================
#==============================================================================
# CONSTANTES
# 0 or 1 ,,,,---> 1: no copia pero ves mensajes,,,,,---> 0: copia
DRY_RUN=0
#------> cadenas usadas por zenity [es]
z_title='renombra'
z_no_object='ningun objeto seleccionado\nEXIT'
#==============================================================================
# INIT VARIABLES
# may depends of your system
BASENAME='/usr/bin/basename'
#CP='/bin/cp' modificada por la siguiente linea
CP='/bin/mv'
DATE='/bin/date'
DIRNAME='/usr/bin/dirname'
GVFSMOUNT='/usr/bin/gvfs-mount'
GREP='/bin/grep'
LS='/bin/ls'
PERL='/usr/bin/perl'
ZENITY='/usr/bin/zenity'
# ### FORMAT OF THE FILE'S BACKUP ###
#
# 2 parts : date (FMTBKP) and incremental digit (NB_DIGIT)
# - FMTBKP : cf. man date (ver opciones de date en manual)
# - NB_DIGIT : number of digits (incremental for same date)
#
# it would copy /tmp/foo.pl to /tmp/foo~2001091101.pl# configurado a mi gusto:
FMTBKP=`$DATE +-%d%b%Y-hm_%H%M-v` ; NB_DIGIT='1'
#==============================================================================
# MAIN
[ -x "$ZENITY" ] || {
echo "[ERROR] $ZENITY not found : EXIT"
exit 1
}
### CHECK : is object selected ?
[ "$NAUTILUS_SCRIPT_SELECTED_URIS" == "" ] && {
$ZENITY --error --title "$z_title" \
--text="$z_no_object"
exit 1
}
# retrieve the first object selected
uri_first_object=`echo -e "$NAUTILUS_SCRIPT_SELECTED_URIS" \
| $PERL -ne 'print;exit'`
type_uri=`echo "$uri_first_object" \
| $PERL -pe 's~^(.+?)://.+$~$1~'`
# try to get the full path of the uri (local path or gvfs mount ?)
if [ $type_uri == "file" ] ; then
filepath_object=`echo "$uri_first_object" \
| $PERL -pe '
s~^file://~~;
s~%([0-9A-Fa-f]{2})~chr(hex($1))~eg'`
elif [ $type_uri == "smb" -o $type_uri == "sftp" ] ; then
if [ -x $GVFSMOUNT ] ; then
# host (and share for smb) are matching a directory in ~/.gvfs/
host_share_uri=`echo "$uri_first_object" \
| $PERL -pe '
s~^(smb://.+?/.+?/).*$~$1~;
s~^(sftp://.+?/).*$~$1~;
'`
path_gvfs=`${GVFSMOUNT} -l \
| $GREP "$host_share_uri" \
| $PERL -ne 'print/^.+?:\s(.+?)\s->.+$/'`
# now let's create the local path
path_uri=`echo "$uri_first_object" \
| $PERL -pe '
s~^smb://.+?/.+?/~~;
s~^sftp://.+?/~~;
s~%([0-9A-Fa-f]{2})~chr(hex($1))~eg'`
filepath_object="${HOME}/.gvfs/${path_gvfs}/${path_uri}"
else
$ZENITY --error --title "$z_title" \
--text="cannot acces to file - check gvfs\nEXIT"
exit 1
fi
else
$ZENITY --error --title "$z_title" \
--text="cannot acces to file - uri not known\nEXIT"
exit 1
fi
### CHECK : is file ?
[ -f "$filepath_object" ] || {
$ZENITY --error --title "$z_title" \
--text="$filepath_object is not a file\nEXIT"
exit 1
}
# retrieve infos
dirpath_object=`$DIRNAME "$filepath_object"`
filename_object=`$BASENAME "$filepath_object" | $PERL -pe 's/\.(tar\.gz|\w+)$//i'`
extension_object=`$BASENAME "$filepath_object" | $PERL -ne '/(\.(tar\.gz|\w+))$/i&&print$1'`
# increment last digits if new name exists
filename_backup=`$LS "$dirpath_object" \
| $PERL -lne '
$[=1;
/^'"$filename_object"''$FMTBKP'(\d+)'$extension_object'$/ && $s[($1+0)]++;
END{
for(@s){
($_&&++$i)||last
}
printf("'"$filename_object"''$FMTBKP'%0'$NB_DIGIT'd'$extension_object'",++$i)
}'`
if [ $type_uri == "file" ] ; then
# cmd_cp="$CP -p '$filepath_object' '$dirpath_object/$filename_backup'" linea modificada, ver siguiente linea.
cmd_cp="$CP '$filepath_object' '$dirpath_object/$filename_backup'"
else
cmd_cp="$CP '$filepath_object' '$dirpath_object/$filename_backup'"
fi
### DRY RUN : noop
[ $DRY_RUN -eq 1 ] && {
$ZENITY --info --title "$z_title" \
--text="DRY RUN:
filepath_object:$filepath_object
dirpath_object:$dirpath_object
filename_object:$filename_object
extension_object:$extension_object
filename_backup:$filename_backup
COMMAND: $cmd_cp"
exit 0
}
### GO : let's copy
eval "$cmd_cp"
[ $? -eq 0 ] || {
$ZENITY --error --title "$z_title" \
--text="ERROR
cp -p \"$filepath_object\" \"$dirpath_object/$filename_backup\""
exit 1
}
exit 0
### EOFL.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
Me acabo de dar cuenta,, que la fecha (y hora) que me pone en el nombre,,,es la del momento de renombrado,,,
cuando en realidad la que quiero que aparezca es la de creación...
¿cómo se solventa esto?
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
-
Hola Sanatas,,
el renombrado lo realizo en el escritorio, y despues el fichero va a segun que carpeta,, dependiendo de la tematica del fichero.
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............ -
Hola Sanatas,,
el renombrado lo realizo en el escritorio, y despues el fichero va a segun que carpeta,, dependiendo de la tematica del fichero.
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............-
Hola otra vez,,
Sólo necesito una ayud más,,::
¿cómo uso la fecha de creación del fichero?
qué variable es esa?,, el script tal como está me pone la fecha en que realizo el renombrado,, pero yo quiero poner la de creación,,, pero no sé como se llama esa variable.
gracias
L.U.R.D.O. nº 377333 Linux Usuario Registrado con Denominación de Origen. :-D ............
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
tutatis
Iniciado Ancestral
Envíos: 95