Say I have the following files:

```
a_b.txt               a_b_c.txt             a_b_c_d_e.txt         a_b_c_d_e_f_g_h_i.txt

```

I want to rename them in such a way that I split their filenames by `_` and I retain the first and last field, so I end up with:

```
a_b.txt               a_c.txt             a_e.txt         a_i.txt

```

Thought it would be easy, but I'm a bit stuck...

I tried `rename` with the following regexp:

```
rename 's/^([^_]*).*([^_]*[.]txt)/$1_$2/' *.txt

```

But what I would really need to do is to actually split the filename, so I thought of `awk`, but I'm not so proficient with it... This is what I have so far (I know at some point I should specify `FS="_"` and grab the first and last field somehow...

```
find . -name "*.txt" | awk -v mvcmd='mv "%s" "%s"\n' '{old=$0; <<split by _ here somehow and retain first and last fields>>; printf mvcmd,old,$0}'

```

Any help? I don't have a preferred method, but it would be nice to use this to learn `awk`. Thanks!