# sz
A pragmatic way to view your file sizes. Think of it as an easier-to-use and more intuitive alternative to the
[du](https://www.gnu.org/software/coreutils/manual/html_node/du-invocation.html#du-invocation) coreutil.
This project is still under development and might contain bugs and crappy code! Please open issues/PRs if you find something janky.
## usage
Let's take a look at how we can use this utility in a directory.
- to find the size of the current directory (excluding gitignored and hidden files/files in gitignored or hidden directories)
```bash
sz .
```
this will be the output:

```bash
sz | 41.52KB
10 files parsed
```
- if you want to list the size of each file along with the file path:
```bash
sz . -l
```

- you can include gitignored and hidden flags by including the `-g` and `-i` flag respectively.
```bash
sz . -l -i -g
```

- if you run this command in a directory with more than 50 files it will only show the first 20.
you can either provide the number of items you want to list with the `-n` argument or include the
`-L` flag to list all the items.
```bash
sz . -l -i -g -n 30 # show me the first 30 items
```
```bash
sz . -l -i -g -L # show me all the files
```
- you can also sort the items based on size using the `-d` and `-a` flags.
```bash
sz . -l -d -n 5 # returns the 5 largest files in the current directory
```

```bash
sz . -l -a -n 6 # returns the 6 smallest files in the current directory
```

- to view only the root directories in a path, use the `-D` flag.
this flag will only show directories with the parent same as the path provided.
it will not list any files.
```bash
sz ~/Documents/rl -l -D
```

- you can recursively view all the directories in a path by providing the `-R` flag.
```bash
sz ~/Documents/rl -l -D -R
```

note that you can use all the options previously mentioned with the `-D` flag too.
```bash
# shows the 3 largest directories in this path (including gitignored or hidden)
sz ~/Documents/rl -l -D -R -i -g -d -n 3
```

- use the `-e` flag to exclude directories
```bash
sz ~/Documents/rl -l -D -R -d -e ~/Documents/rl/public/ ~/Documents/rl/assets/
```

warning: this arg doesn't *really* work with the `-i` or `-g`
- use the `-s` flag to show the total line count of all the files parsed. **Run this only with
UTF-8 encoded files, obviously.**
```bash
sz ./src -l -s
```

## options
The options are pretty simple yet powerful:
```bash
Options:
-d, --sort-files-desc Sort items by size in descending order
-a, --sort-files-asc Sort items by size in ascending order
-i, --include-hidden Include hidden files
-l, --list-files List the files in the directory
-L, --list-all List all files in the directory even if directory count exceeds 50
-g, --include-gitignored Include gitignored files
-e, --exclude-dirs <EXCLUDE_DIRS>... Directories to exclude
-n, --num-files <NUM_FILES> Number of files to list
-D, --only-dirs Show only directories
-R, --recursive-dirs Recursively list directories (Only to be used with -D flag)
-s, --show-lines Show total line count for items
-h, --help Print help
```
Run `sz -h` to view this help message.