# => 6 │ signature.rs │ 1.2 KB
# => ───┴───────────────┴─────────
```
This helps to create a table that's more focused on what we need. Next, let's say we want to only look at the 5 smallest files in this directory:
```nu
ls | sort-by size | first 5
# => ───┬──────────────┬──────┬────────┬────────────
# => # │ name │ type │ size │ modified
# => ───┼──────────────┼──────┼────────┼────────────
# => 0 │ lib.rs │ File │ 330 B │ 5 days ago
# => 1 │ signature.rs │ File │ 1.2 KB │ 5 days ago
# => 2 │ path.rs │ File │ 2.1 KB │ 5 days ago
# => 3 │ files.rs │ File │ 4.6 KB │ 5 days ago
# => 4 │ shapes.rs │ File │ 4.7 KB │ 5 days ago
# => ───┴──────────────┴──────┴────────┴────────────
```
You'll notice we first sort the table by size to get to the smallest file, and then we use the `first 5` to return the first 5 rows of the table.
You can also [`skip`](/commands/docs/skip.md) rows that you don't want. Let's skip the first two of the 5 rows we returned above:
```nu
ls | sort-by size | first 5 | skip 2
# => ───┬───────────┬──────┬────────┬────────────
# => # │ name │ type │ size │ modified
# => ───┼───────────┼──────┼────────┼────────────
# => 0 │ path.rs │ File │ 2.1 KB │ 5 days ago
# => 1 │ files.rs │ File │ 4.6 KB │ 5 days ago
# => 2 │ shapes.rs │ File │ 4.7 KB │ 5 days ago
# => ───┴───────────┴──────┴────────┴────────────
```
We've narrowed it to three rows we care about.
Let's look at a few other commands for selecting data. You may have wondered why the rows of the table are numbers. This acts as a handy way to get to a single row. Let's sort our table by the file name and then pick one of the rows with the [`select`](/commands/docs/select.md) command using its row number:
```nu
ls | sort-by name
# => ───┬───────────────┬──────┬─────────┬────────────
# => # │ name │ type │ size │ modified
# => ───┼───────────────┼──────┼─────────┼────────────
# => 0 │ files.rs │ File │ 4.6 KB │ 5 days ago
# => 1 │ lib.rs │ File │ 330 B │ 5 days ago
# => 2 │ lite_parse.rs │ File │ 6.3 KB │ 5 days ago
# => 3 │ parse.rs │ File │ 49.8 KB │ 1 day ago
# => 4 │ path.rs │ File │ 2.1 KB │ 5 days ago
# => 5 │ shapes.rs │ File │ 4.7 KB │ 5 days ago
# => 6 │ signature.rs │ File │ 1.2 KB │ 5 days ago
# => ───┴───────────────┴──────┴─────────┴────────────
ls | sort-by name | select 5
# => ───┬───────────────┬──────┬─────────┬────────────
# => # │ name │ type │ size │ modified
# => ───┼───────────────┼──────┼─────────┼────────────
# => 0 │ shapes.rs │ File │ 4.7 KB │ 5 days ago
# => ───┴───────────────┴──────┴─────────┴────────────
```
## Getting Data out of a Table
So far, we've worked with tables by trimming the table down to only what we need. Sometimes we may want to go a step further and only look at the values in the cells themselves rather than taking a whole column. Let's say, for example, we wanted to only get a list of the names of the files. For this, we use the [`get`](/commands/docs/get.md) command:
```nu
ls | get name
# => ───┬───────────────
# => 0 │ files.rs
# => 1 │ lib.rs
# => 2 │ lite_parse.rs
# => 3 │ parse.rs
# => 4 │ path.rs
# => 5 │ shapes.rs
# => 6 │ signature.rs
# => ───┴───────────────
```
We now have the values for each of the filenames.
This might look like the [`select`](/commands/docs/select.md) command we saw earlier, so let's put that here as well to compare the two:
```nu
ls | select name
# => ───┬───────────────
# => # │ name
# => ───┼───────────────
# => 0 │ files.rs
# => 1 │ lib.rs
# => 2 │ lite_parse.rs
# => 3 │ parse.rs
# => 4 │ path.rs
# => 5 │ shapes.rs
# => 6 │ signature.rs
# => ───┴───────────────
```
These look very similar! Let's see if we can spell out the difference between these two commands to make it clear:
- [`select`](/commands/docs/select.md) - creates a new table which includes only the columns specified
- [`get`](/commands/docs/get.md) - returns the values inside the column specified as a list