gh api is a gh command that can help you call the github apis. You can use the -q option to use jq to sort
For example, here's one way to get a list of contents in one command, based on the trees api:
gh api '/repos/{owner}/{repo}/git/trees/{branch}?recursive=true' -q '.tree[]|.path'
Here, owner is your github user (or organization) name, repo is the repo name, branch is the branch name. Then .tree[]|.path turns the raw json output into a list of just paths in your repo.
recursive option will save you from having to recurse the directory structure yourself, but has a size limit
Note: The limit for the tree array is 100,000 entries with a maximum size of 7 MB when using the recursive parameter.
If you're concerned about that limit, you'll have to do your own recursion.
There is also a contents api (with the same 100k limit) as well as one for tarballs or zipfiles if you're interested in the contents of those files and not just their names.
I encourage you to explore the github apis in depth - github has some really interesting APIs and did a very good job implementing them.