tag:blogger.com,1999:blog-6230959840389481677.post-4641197480108986352008-03-19T13:47:00.000-07:002008-03-20T07:08:40.866-07:00Cómo verificar archivos y directorios en ShellEstos son mis recursos favoritos cuando necesito comandos en Unix para verificar la existencia de carpetas, saber si existen archivos o si están vacíos. Acudo a ellos comúnmente en scripts de respaldo de bases de datos, antes de invocar a RMAN o EXP bajo Linux y después de que se realizan los mismos para verificar los resultados.<br />También recurro al tamaño en bytes de archivos o de todos los archivos de un directorio, especialmente para generar reportes o logs en nuestros scripts.<br /><br /><strong>Verificar si una carpeta existe<br /></strong><pre><span style="font-family:courier new;color:#009900;"> if [ -d <em><span style="color:#3333ff;">archivo</span></em> <carpeta>]<br /> then<br /> # Codigo si existe<br /> echo existe<br /> else<br /> # codigo si no existe<br /> echo no existe<br /> fi</span></pre><strong>Verificar si un archivo de salida no esta vacío<br /></strong><pre><span style="font-family:courier new;color:#009900;"> if [ -s <span style="color:#3333ff;"><em>archivo</em></span> <archivo>]<br /> then<br /> # Codigo si existe y no es vacio<br /> ...<br /> else<br /> # codigo si no existe o es vacio<br /> ...<br /> fi</span></pre><strong>Verificar si un archivo es escribible<br /></strong><pre><span style="font-family:courier new;color:#009900;"> if [ -w <span style="color:#3333ff;"><em>archivo</em></span> <archivo>]<br /> then<br /> # Codigo si existe y es escribible<br /> ...<br /> else<br /> # codigo si no existe o no es escribible<br /> ...<br /> fi</span></pre><strong>Verificar la integridad de un archivo comparando checksum<br /></strong><pre><span style="font-family:courier new;color:#009900;"> check1=`md5sum <span style="color:#3333ff;"><em>archivo_origen</em></span> &#124; cut -d' ' -f1`<br /><br /> check2=`md5sum <span style="color:#3333ff;"><em>archivo_destino</em></span> &#124; cut -d' ' -f1`<br /><br /> if [ $check1 -eq $check2 ]<br /> then<br /> # Integridad del archivo correcta<br /> ...<br /> else<br /> # Error de checksum<br /> ...<br /> fi</span></pre><strong>Obtener el tamaño de un archivo en bytes<br /></strong><pre><span style="font-family:courier new;color:#009900;"> x=`du -m <span style="color:#3333ff;"><em>archivo</em></span> &#124; cut -f1`</span></pre><strong>Sumar la cantidad total de bytes en un directorio<br /></strong><pre><span style="font-family:courier new;color:#009900;"> suma=0<br /> for arch in *<br /> do<br /> if [ ! -d $arch ]<br /> then<br /> tamano=`du -b $arch &#124; cut -f1`<br /> let suma=$suma+$tamano<br /> fi<br /> done<br /> echo $suma </span></pre>lferhttp://www.blogger.com/profile/00618392085702183279noreply@blogger.com