I want to find files in a directory and identify by their mimetype, **not** by the extension of the files.

I'am using this command to determine the mime type:

```
% find . -type f -print0 | xargs -0 -I{} file --mime-type {}
./foo
bar.png: image/png
./OWoHp.png: image/png
./J7ZwV.png: image/png
./foo.txt: inode/x-empty
./bar: inode/x-empty
./hUXnc.png: image/png

```

The first file has a newline in the filename:

```
% ls foo$'\n'bar.png
foo?bar.png

```

That's ok and the file should **not** be renamed.

With the next command I want to filter all files that are not images.

```
% find . -type f -print0 | xargs -0 -I{} file --mime-type {} | awk -F$"\0" -F": " '/image/ {print $1}'
bar.png
./OWoHp.png
./J7ZwV.png
./hUXnc.png

```

and identify their sizes:

```
% find . -type f -print0 | xargs -0 -I{} file --mime-type {} | awk -F$"\0" -F":" '/image/ {print $1}' | xargs -I{} identify -format "%[fx:w*h] %i\n" {}
identify: unable to open image `bar.png': No such file or directory @ error/blob.c/OpenBlob/2709.
identify: unable to open file `bar.png' @ error/png.c/ReadPNGImage/3922.
26696 ./OWoHp.png
47275 ./J7ZwV.png
37975 ./hUXnc.png

```

But that does not work because there is no file with the name `bar.png`. The correct name is

```
./foo
bar.png

```

with a newline in the name.