Esto es C?????
hice un mini script para descomprimir todo,
pero me falta eliminar todos los archivos originales... cómo lo hago... me ayudan plisCódigo PHP:#!/bin/bash
##extracción zip
for zip in `ls|grep .zip`
do unzip $zip
done
##extracción tar
for tar in `ls|grep .tar`
do tar -xvf $tar
done
##extracción gzip
for gzip in `ls|grep .gzip`
do gzip -d $tar
done
##extracción tarbz2
for tarbz2 in `ls|grep .tar.bz2`
do tar xjvf $tarbz2
done
##extracción targz
for targz in `ls|grep .tar.bz2`
do tar -xzvf $targz
done
##extracción rar
for rar in `ls | grep .rar`
do unrar $rar
done
##extracción lha
for lha in `ls | grep .lha`
do lha -x $lha
done
##extracción arj
for arj in `ls | grep .arj`
do unarj $arj
done
##extracción zoo
for zoo in `ls | grep .zoo`
do zoo -x $arj
done
echo "listo :D"
pd: ese done está bien al final de cada operación, o debo dejarlo sólo al final antes del echo para avisarme que lo hizo?
Esto es C?????
variables de ciclo y condicionante (tio yakko me dijo como se llamaba hace un día), al ldo de los comandos de siempre en la consola
Te refieres a las condicionantes??? pero como se llaman esos comodines que usas?? digo, para buscarlos y aprender algunos... con suerte conozco el grep, el "&&" y el "|°, que pa mas recacha los tenia contemplados al reves... Quisiera aprender a hacer estos scripts, pero quisiera saber que lenguaje se usa...
es BASH
no veo ninguna condicionante.
aer, odio hacer scripts y soy el wn más ñurdo programando, pero este es la palta (voy a ir pegando a medida que lo complete, no hinchen las pelotas por mientras (igual lo pueden ir probando)
PD: seguramente hay muchas maneras de hacerlo más eficiente, pero con mi pobre nivel de programación, esto es lo que hay.
Código:#!/bin/bash clear function buscar { find . \( -name "*.zip" -o -name "*.tar" -o -name "*.gzip" -o -name "*.tar.gz" -o -name "tar.bz2" -o -name "*.rar" \) } function borrar { find . \( -name "*.zip" -o -name "*.tar" -o -name "*.gzip" -o -name "*.tar.gz" -o -name "tar.bz2" -o -name "*.rar" \) -exec rm -i {} \; } ### menu #### while : do clear echo -e "********************************************************" echo -e "********************************************************" echo -e "\n* [1] Listar los archivos comprimidos de este directorio" echo -e "* [2] Descomprimir archivos en este directorio" echo -e "* [3] Borrar los archivos comprimidos " echo -e "* [q] Salir\n " echo -e "* NOTA: BORRAR ARCHIVOS LOS ELIMINARÁ PERMANENTEMENTE" echo -e "********************************************************" echo -e "********************************************************" echo -e "\nIngrese opción [1-3, q ]: " read OPT case $OPT in 1) export EXISTE=$(buscar) clear echo -e "\nBuscando archivos comprimidos...\n" if [ -z "$EXISTE" ]; then echo -e "** No se encontraron archivos comprimidos. **\n" else clear echo -e "$EXISTE \n" fi echo -e "Presione ENTER para continuar. . ."; read; clear ;; 2) export EXISTE=$(buscar) clear if [ -z "$EXISTE" ]; then echo -e "\nNo existen archivos para descomprimir...\n" else echo -e "\nDescomprimiendo archivos...\n" find . -name "*.zip" -exec unzip -d {}. {} \; find . -name "*.rar" -exec unrar e {} {}./ \; find . -name "*.tar.gz" -exec tar xfz {} \; find . -name "*.tar" -exec tar xf {} \; find . -name "*.tar.bz2" -exec tar xfj {} \; echo -e "\n\n*** Descompresión Finalizada ***\n" fi echo -e "Presione ENTER para continuar. . ."; read; clear ;; 3) clear export BORRADOS=$(buscar) if [ -z "$BORRADOS" ]; then echo -e "\n No hay archivos para borrar\n" else echo -e "\nBorrando archivos...\n" echo -e "** ESTA ACCIÓN NO SE PUEDE DESHACER **\n" borrar export BORRADOS=$(buscar) if [ -z "$BORRADOS" ]; then clear echo -e "\n** Todos los archivos comprimidos han sido borrados **\n" else clear echo -e "\n** No se borraron todos los archivos comprimidos **\n" fi fi echo -e "\nPresione ENTER para continuar. . ." ; read; clear ;; q) exit 0;; *) echo -e "Error, por favor seleccione 1,2,3 ó Q"; echo -e "Presione ENTER para continuar. . ." ; read ;; esac donever 0.1
ver 0.2
ver 0.3
ya funciona, me dio paja hacer algo más pro, pero cumple con lo pedido![]()
Última edición por yakko; 01/02/2012 a las 14:48
narf

yo hice algo parecido para buscar clases dentro de jars (los cuales son zips al fin y al cabo),
de este código se desprende mi recomendación de crear una carpeta para el zip y descomprimirlo ahí,Código:for z in *.$1 do mkdir `basename $z .$1` cd `basename $z .$1` unzip ../$z cd .. done
para así evitar sobreescrituras de archivos en la descompresión y desorden.
A los que contemplan la luna las nubes a veces ofrecen una pausa.
Portable: Shure se-215 / HifiMan RE-0 / Sennheiser PX-200 II | Studio: Samson Resolv 40a / Fiio A1 | HT: Onkyo TX-SR 308 / Paradigm Titan Monitor v. 6

A los que contemplan la luna las nubes a veces ofrecen una pausa.
Portable: Shure se-215 / HifiMan RE-0 / Sennheiser PX-200 II | Studio: Samson Resolv 40a / Fiio A1 | HT: Onkyo TX-SR 308 / Paradigm Titan Monitor v. 6
ya está listo, si lo van a editar véanlo con algo que resalte el código en colores (como vim).
narf
yakko esta rebueno
y el código tb
El problema es que si uno de los archivos zip contiene otro archivo zip (pasa bastante xD), al ejecutar la orden 2 descomprimir y luego 3 borrar ,, va a borrar el zip "hijo"
podría ponerse algo como:
para que borre solo archivos que descomprimió.Código:find . -wholename '*.zip' -exec unzip {} \; -exec rm {} \;
Saludos.
Última edición por ebanyu; 01/02/2012 a las 14:21
Send it from notebook with my chubi fingers.
Blog informatico: http://www.ebanyu.com.ar
-------------------
te pregunta archivo por archivo, justamente para que eso no pase.
y si no quieres borrarlo mejor agregarlepodría ponerse algo como:
para que borre solo archivos que descomprimió.Código:find . -wholename '*.zip' -exec unzip {} \; -exec rm {} \;
Saludos.
Código:find . -wholename '*.zip' -exec unzip {} \; -exec rm -i {} \;
Última edición por yakko; 01/02/2012 a las 14:30
narf
Send it from notebook with my chubi fingers.
Blog informatico: http://www.ebanyu.com.ar
-------------------
Gracias a todos... Voy a leer ese manualcito cuando llegue a la casa
Enviado desde mi GT-I5500L usando Tapatalk
buen script yakko!
Yakko, sos groso sabeLOL +10
me pueden pegar una ayuda
tengo este for que es para crear una lista de usuarios ldap , el problema es q no encuentro la forma de hacer q me sume un numero en el campo uidnumber
esto y meter el primer for dentro del otro osviamente no cumple lo q kieroCódigo:#!/bin/bash for ((e=1100; e<1147; e++)) do for i in $(cat hostnames-primerpiso.txt); do echo "dn: cn=$i,ou=users,dc=example cn: $i gidnumber: 500 homedirectory: /home/$i loginshell: /bin/bash objectclass: inetOrgPerson objectclass: posixAccount objectclass: top sn: $i uid: $i uidnumber: $e " >> ldap.user.ldif done done, de todas las formas q se me ocurrio meter un numero siempre hace lo mismo , o sea un for dentro de otro for no sirve
.
Esto es resimple pero me dejo pillo
---------- Post added at 11:51 ---------- Previous post was at 11:31 ----------
bueno esto me sirvio![]()
toy felizCódigo PHP:#!/bin/bash
a=1100
for i in $(cat hostnames-primerpiso.txt);
do
echo "dn: cn=$i,ou=users,dc=example
cn: $i
gidnumber: 500
homedirectory: /home/$i
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: $i
uid:$i
uidnumber: $a " >> ldap.user.ldif
let "a+=1"
done
,
Yo creé un script que me limpiara los logs del sarg (que no se limpian automágicamente :ffuu ) :B