Question: Example of usage (contrived!): rename .mp3 files to .txt.

I'd like to be able to do something like

```
find -name '*.mp3' -print0 | xargs -0 -I'file' mv file ${file%.mp3}.txt

```

This doesn't work, so I've resorted to piping `find`'s output through `sed -e 's/.mp3//g'`, which does the trick.

Seems a bit hackish though; **is there a way to use the usual bash `${x%y}` syntax?**

Answer: 
If you have GNU Parallel installed:

```
find -name '*.mp3' -print0 | parallel -0 mv {} {.}.txt

```

If your file names do not contain \n (newline) this will work too:

```
find -name '*.mp3' | parallel mv {} {.}.txt

```

Watch the intro video to learn more about GNU Parallel <http://www.youtube.com/watch?v=OpaiGYxkSuQ>
```
perl rename.pl 's/\.mp3$/.txt/' *.mp3  
# Or **/*.mp3 for zsh and bash with specific settings set, for a recursive 
# rename.

```

<http://people.sc.fsu.edu/~jburkardt/pl_src/rename/rename.html>