Question: I was wanting to run a `find` and then execute a script on each match; however, I was wanting to print the name of the matched file above the output from each `exec`. How can I produce the following output:

```
$ find . -name 'something' -exec sh script.sh {} \;
./something_1
output from 
script.sh something_1
./something_2
output from
script.sh something_2

```

I am currently only getting the output from `script.sh`. I tried `-exec echo {} && sh script.sh {} \;` with no success.

I would prefer a solution using `-exec` or `xargs -print0`, i.e., not prone to problems with white space.

Answer: 
`find` prints all matching files by default if you don't specify any other action.

When you do `-exec ...`, it replaces the `-print`.

When you put two actions next to each other, it means `AND`.

So just do both:

```
$ find . -name 'something' -print -exec sh script.sh {} \;

```
Try doing this :

```
$ find . -name 'something' -exec sh script.sh {} \; |
    script.sh |
    script.sh

```