Tengo un servidor que recibe un archivo por cliente cada día en un directorio. Los nombres de archivo se construyen de la siguiente manera:
uuid_datestring_other-data
Por ejemplo:
d6f60016-0011-49c4-8fca-e2b3496ad5a7_20160204_023-ERROR
uuid
Es un formato estándar uuid.datestring
es la salida dedate +%Y%m%d
.other-data
es de longitud variable pero nunca contendrá un guión bajo.
Tengo un archivo del formato:
#
d6f60016-0011-49c4-8fca-e2b3496ad5a7 client1
d5873483-5b98-4895-ab09-9891d80a13da client2
be0ed6a6-e73a-4f33-b755-47226ff22401 another_client
...
Necesito verificar que cada uuid listado en el archivo tenga un archivo correspondiente en el directorio, usando bash.
Llegué hasta aquí, pero siento que vengo de la dirección incorrecta usando una instrucción if, y que necesito recorrer los archivos en el directorio de origen.
Las variables source_directory y uuid_list se han asignado anteriormente en el script:
# Check the entries in the file list
while read -r uuid name; do
# Ignore comment lines
[[ $uuid = \#* ]] && continue
if [[ -f "${source_directory}/${uuid}*" ]]
then
echo "File for ${name} has arrived"
else
echo "PANIC! - No File for ${name}"
fi
done < "${uuid_list}"
¿Cómo debo verificar que los archivos en mi lista existen en el directorio? Me gustaría usar la funcionalidad bash en la medida de lo posible, pero no estoy en contra de usar comandos si es necesario.