mirror of
https://github.com/jbranchaud/til
synced 2026-08-31 16:51:46 +00:00
40 lines
1.4 KiB
Markdown
40 lines
1.4 KiB
Markdown
# List And Count All Posts In TIL Repo
|
||
|
||
I want to be able to reliably list and count all posts in [my TIL
|
||
repo](https://github.com/jbranchaud/til). I do this to check that the count in
|
||
the README is accurate and in [the workflow
|
||
script](https://github.com/jbranchaud/jbranchaud/blob/71cba39dffb2bff68bf16d8895e435065e400250/scripts/update_tils.py#L101)
|
||
that powers [my GitHub Profile
|
||
README](https://github.com/jbranchaud/jbranchaud). In the past, I've used
|
||
pattern matching on the listing of all TILs in the
|
||
[README.md](https://github.com/jbranchaud/til/blob/master/README.md). That is
|
||
error prone and has required me to use two different markdown list styles.
|
||
|
||
A better approach is to ask `git` how many posts it currently has under version
|
||
control. I use a consistent directory structure where each TIL post is a
|
||
markdown file that is nested within a single category directory.
|
||
|
||
```bash
|
||
❯ git ls-files -- */*.md
|
||
ack/ack-bar.md
|
||
ack/case-insensitive-search.md
|
||
ack/list-available-file-types.md
|
||
...
|
||
```
|
||
|
||
Using `git ls-files` has the added benefit of only listing files that are
|
||
currently checked in to the project. So if I run this locally, it won't pick up
|
||
a draft post that hasn't been committed yet.
|
||
|
||
I can then pipe this to `wc -l` (count of all lines) to produce the count:
|
||
|
||
```bash
|
||
❯ git ls-files -- */*.md | wc -l | xargs
|
||
1850
|
||
```
|
||
|
||
Note: the empty `xargs` is a trick to trim the whitespace padding that `wc`
|
||
introduces.
|
||
|
||
See `man git-ls-files` for more details.
|