/// <summary>
    /// Case-insensitive search a folder for a list of matching files
    /// </summary>
    /// <param name="path">Folder to search</param>
    /// <param name="searchPattern">Optional suffix to match</param>
    /// <returns>A list of matching files</returns>
    IEnumerable <string> DirectoryGetFiles(string path, string searchPattern = null)
    {
        zf.AwsS3ZephyrDirectory     dir   = new zf.AwsS3ZephyrDirectory(_awsClient, path);
        IEnumerable <zf.ZephyrFile> files = dir.GetFiles();
        List <string> matches             = new List <string>();

        if (!string.IsNullOrWhiteSpace(searchPattern))
        {
            foreach (zf.ZephyrFile z in files)
            {
                if (z.Name.EndsWith(searchPattern, StringComparison.OrdinalIgnoreCase))
                {
                    matches.Add(z.FullName);
                }
            }
        }
        else
        {
            foreach (zf.ZephyrFile z in files)
            {
                matches.Add(z.FullName);
            }
        }

        return(matches);
    }
        public static void Main(string[] args)
        {
            Clients clients = new Clients();

            clients.aws = new AwsClient(RegionEndpoint.EUWest1);
            AwsS3ZephyrDirectory dir = new AwsS3ZephyrDirectory(clients.aws, @"s3://mybucket/");

            foreach (ZephyrDirectory d in dir.GetDirectories())
            {
                Console.WriteLine(d.FullName);
            }

            foreach (ZephyrFile f in dir.GetFiles())
            {
                Console.WriteLine(f.FullName);
            }

            Console.WriteLine("Press <ENTER> To Continue...");
            Console.ReadLine();
        }
    /// <summary>
    /// Case-insensitive search a folder for an exact filename match
    /// </summary>
    /// <param name="path">Folder to search</param>
    /// <param name="fileName">Filename to match</param>
    /// <returns>The matching case-sensitive path or (returns null or throws FileNotFoundException)</returns>
    string DirectoryGetFile(string path, string fileName, bool throwFileNotFoundException = true)
    {
        zf.AwsS3ZephyrDirectory dir = new zf.AwsS3ZephyrDirectory(_awsClient, path);

        List <string> files = dir.GetFiles()
                              .Where(f => f.Name.Equals(fileName, StringComparison.OrdinalIgnoreCase))
                              .Select(f => f.Name).ToList();

        if (files.Count == 1)
        {
            return(UtilitiesPathCombine(path, files[0]));
        }
        else if (throwFileNotFoundException)
        {
            throw new FileNotFoundException($"Could not load {fileName}.  Found {files.Count} name matches.");
        }
        else
        {
            return(null);
        }
    }