Sistemas Operativos > GNU/Linux
Archivo Tar
arielb:
Bueno asi fue que tuve que hacerlo pork las variables cuando salen del ciclo se pierden no se pork pero revisare mas para saber . lo hice con una funcion
--- Código: Text ---function Revisar { vDir=0vArchivo=0echo revisandocat revisaTar.txt | while read cdLeedo echo /$cdLee if [ -f "/$cdLee" ]; then vArchivo=$(( $vArchivo + 1 )) elif [ -d "/$cdLee" ]; then vDir=$(( $vDir + 1 )) fi contenido="Archivos: $vArchivo Directorios:$vDir" echo $contenido > cantidad.txtdone cat cantidad.txt | while read cdL do echo $cdL done }
su -:
Ya lo hice por el lado feo: usando tar:
--- Código: Text ---#!/usr/bin/env perl #Licencia: GPL#Autor: su - use strict; sub usage { print "tgzlist: file.tar.gz [-f -d]\n"; print "Options:\n"; print "\t-f: Files numbers\n"; print "\t-d: Directories\n"; exit;} usage() unless @ARGV; if(not -f $ARGV[0]){usage();} my ($file, $linea) = (0, 0); my $pid = open(my $fl, "-|", "tar -tzf $ARGV[0]") or die "Error: $!\n";while(my $linea = <$fl>){ chomp $linea; if ($linea =~ m#(.*)/$#){ $dir += 1; } else { $file += 1; }}close $fl;print "There is $file\n"; if $ARGV[1] eq "-f";print "There is $dir\n"; if $ARGV[1] eq "-d";
Lo bueno es que no tenes que descomprimir el archivo.
su -:
Algo mas:
No tienes que poner tada la lista en el archivo y hacer un cat...
con:
--- Código: Text ---for archivo in `tar -tzf archivo.tar.gz`;do codigo...;done
arielb:
ah perfecto su, muchas gracias por tu apoyo, ahora bien tengo una duda, estoy manejando un bash que ya está hecho y tenia que agregarle algunas cosas y dentro de esas esta esta que mencioné aquí, la pregunta sería para usar este programa dentro del script tendría que hacer algo entra, o simplemente invocarlo y pasarle el parametro de lo que necesito hacer?.
su -:
No entiendo bie que es lo que quieres.
Ten en cuenta lo siguiente:
Cuando programas en Bash es igual que usar la terminal, de hecho se puede decir que cuando estas usando la terminal estas programando en bash.
Lo que identifica a Shell script es que usa programas a parte como si fueran funciones, entonces podes usar cualquier porgrama que hayas hecho si esta dentro del path de ejecucion o si lo indicas:
--- Código: Text ---/path/de/programa --flagsfor Cosa in `tgzlist archivo.gz`;do echo ${Cosa};done
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa