¿Script para duplicar archivo numerándolo? [SOLUCIONADO]

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
Avatar de Usuario
elmohino
Forista Menor
Forista Menor
Mensajes: 95
Registrado: Lun Oct 20, 2008 7:00 am

¿Script para duplicar archivo numerándolo? [SOLUCIONADO]

Mensaje por elmohino » Vie Ago 13, 2010 6:17 pm

Hola, feliz verano.

En esta ocasión buscaba un mini-script (o una línea de comandos) que me permitiese duplicar un mismo archivo un número determinado de veces y que esos duplicados fuesen numerados correlativamente.

El archivo en cuestión tiene una extensión *.7z.001 y quisiera duplicarlo numerándolo desde el *.002 hasta, por ejemplo, *.017, manteniendo el nombre del archivo igual.

¿Es posible esto?

Perdón por mi poco conocimiento.

Gracias y salud.
Última edición por elmohino el Vie Ago 13, 2010 10:36 pm, editado 1 vez en total.
Avatar de Usuario
cerenkov
Forista Medio
Forista Medio
Mensajes: 402
Registrado: Jue Jun 17, 2010 5:23 am
Ubicación: Venezuela

Re: ¿Script para duplicar archivo numerándolo?

Mensaje por cerenkov » Vie Ago 13, 2010 6:40 pm

En este link:

Script para hacer un video con imágenes jpg

está un script de bash que implementa algo similar a lo que tu quieres entre las líneas 8 y 10. Adapta la porción de código a tus necesidades.

Saludos
Avatar de Usuario
elmohino
Forista Menor
Forista Menor
Mensajes: 95
Registrado: Lun Oct 20, 2008 7:00 am

Re: ¿Script para duplicar archivo numerándolo?

Mensaje por elmohino » Vie Ago 13, 2010 8:34 pm

Gracias, amigo, por la respuesta.

Lo he modificado así:

Código: Seleccionar todo

#!/bin/bash
for archivo in ~/Escritorio/*.001
do
j=001
base=`basename "$archivo" .001`
while [ "$i" != $j ]
do
let "i = i + 1"
cp $archivo ~/Escritorio/$base"$i"
done
Pero al ejecutarlo me da el siguiente error:

Código: Seleccionar todo

usuario@usuario-desktop:~/Escritorio$ ./scri
./scri: línea 11: error sintáctico: no se esperaba el final del fichero
usuario@usuario-desktop:~/Escritorio$
Salud.
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1809
Registrado: Dom Oct 10, 2004 7:00 am

Re: ¿Script para duplicar archivo numerándolo?

Mensaje por neurus » Vie Ago 13, 2010 9:02 pm

Tienes dos "do" y un solo "done".

Además, me parece que eso no te va a numerar los archivos con 001, sino con 1, 2, 3, etc.

Y algo más: si en basename le quitas el punto, o bien se lo agregas después (no se lo quitas directamente) o te escribirá los archivos sin extensión (sin punto).
Avatar de Usuario
elmohino
Forista Menor
Forista Menor
Mensajes: 95
Registrado: Lun Oct 20, 2008 7:00 am

Re: ¿Script para duplicar archivo numerándolo?

Mensaje por elmohino » Mié Ago 18, 2010 8:58 pm

Gracias una vez más, amigo neurus, por su ayuda.

EDIT: cambio de script porque el anterior, si se invoca incorrectamente, puede duplicar en forma de bucle infinito y llegar a llenar todo el disco duro...

Código: Seleccionar todo

#!/bin/bash

# DESCRIPCIÓN: este script está hecho para duplicar el primer trozo de un archivo cortado con 7z renumerando los resultados correlativamente

# CÓMO USAR: ./duplica *.001 [nombre_base].7z. (nºduplicaciones deseadas)
# NOTA: los archivos duplicados aparecerán en el nuevo directorio creado 'duplicados'

mkdir duplicados
file1=0
while [ "$file1" -lt "$3" ]
do
cp $1 duplicados/$2$file1
file1=`expr $file1 + 1`
done
cd duplicados
for file2 in $2*; do
printf -vfile3 $2'%03d' "$((++i))"
[[ -e $file3 ]] || \
mv "$file2" "$file3"
done
Entonces, en el ejemplo puesto más arriba sería así:

Código: Seleccionar todo

$ ./duplica *.001 nombre.7z. 17
Bueno. Creo que voy a poner la etiqueta de SOLUCIONADO, aunque si alguien tiene un script mejor o sabe mejorar éste (creado muy amablemente por el sr. Cabrero), adelante.

Salud y gracias a todos por la ayuda.
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje