Tengo un script y quiero mostrar diferentes mensajes si existe un archivo o no. Tengo un script como:
count=ls /import/*.zip | wc -l
echo "Number of files: " $count
if [ "$count" > "0" ]; then
echo "Import $count files"
else
echo "**** No files found ****"
fi
Sin embargo, si no existen archivos, esto se muestra en No such file or directorylugar de 0 archivos. Hay un directorio en el /import/directorio, por lo que no puedo simplemente hacer un lscomando, ya que siempre devolverá un valor mayor que 0.
¿Cómo puedo contar el número de archivos de una extensión específica (.zip, .gz, etc.) y usar ese valor en un script bash para mostrar el número de archivos y luego usarlo en una declaración if para mostrar diferentes mensajes?

Prueba con esto:
La idea es ocultar el error "no existe tal archivo" que se imprime en STDERR enviándolo al bitbucket, y utilizar la función de prueba adecuada para comparar números. (
-gtSignifica "mayor que". También hay-eq,-lt,-ge, etc.)fuente
count=$(find /import -type f -name "*.zip" | wc -l)ls /import/*.zipsi hay subdirectoriosfindvariante.Probé su script y, como era de esperar, cuando no coinciden los archivos , muestra 0 archivos en la salida, pero también muestra el
lserror justo antes. Resolver esto es bastante fácil, no hay necesidad de deshacerse de élls. Simplemente reemplace la primera línea con esto:2>/dev/nullredirige stderr a/dev/null, suprimiendo el mensaje de error.fuente