miércoles, 19 de marzo de 2008

Cómo verificar archivos y directorios en Shell

Estos 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.
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.

Verificar si una carpeta existe
  if [ -d archivo ]
then
# Codigo si existe
echo existe
else
# codigo si no existe
echo no existe
fi
Verificar si un archivo de salida no esta vacío
  if [ -s archivo ]
then
# Codigo si existe y no es vacio
...
else
# codigo si no existe o es vacio
...
fi
Verificar si un archivo es escribible
  if [ -w archivo ]
then
# Codigo si existe y es escribible
...
else
# codigo si no existe o no es escribible
...
fi
Verificar la integridad de un archivo comparando checksum
  check1=`md5sum archivo_origen | cut -d' ' -f1`

check2=`md5sum archivo_destino | cut -d' ' -f1`

if [ $check1 -eq $check2 ]
then
# Integridad del archivo correcta
...
else
# Error de checksum
...
fi
Obtener el tamaño de un archivo en bytes
  x=`du -m archivo | cut -f1`
Sumar la cantidad total de bytes en un directorio
  suma=0
for arch in *
do
if [ ! -d $arch ]
then
tamano=`du -b $arch | cut -f1`
let suma=$suma+$tamano
fi
done
echo $suma


Ver también
Comandos útiles para Unix Shell
Limpieza de archivos en Unix
Cómo obtener la fecha de ayer en Unix

5 comentarios:

D. Ruiz dijo...

Gracias a tu post he podido solucionar un ejercicio de clase. Gracias.

Unknown dijo...

Buenas, necesitaría saber si hay algún comando que pueda verificar dos archivos y como resultado me devuelva los registros que se encuentran en ambos archivos. Desde ya, muchísimas gracias. Slds.

Unknown dijo...

Hola, recien he visto este blog y tengo una duda. He creado una carpeta desde la terminal que se encuentra en escritorio, he cambiado su numero de permiso al 755 para que tanto usiario, grupos y otros puedan leer y ejecutar el archivo, pero no sé como comprobar dicho cambio, te agradecería si me pudieras ayudar. Gracias

lfer dijo...

Hola Claudia con gusto puedo ayudarte, a que te refieres con comprobar dicho cambio?

Anónimo dijo...

Un post genial, ¡apuntado!

Para completar, con if -f, controlas si existe un fichero.

Aquí, un ejemplo completo:

http://www.sysadmit.com/2018/01/linux-saber-si-existe-directorio-fichero.html