Bind mounts are not a filesystem type, nor a parameter of a mounted filesystem; they're parameters of a mount operation. As far as I know, the following sequences of commands lead to essentially identical system states as far as the kernel is concerned:
mount /dev/foo /mnt/one; mount --bind /mnt/one /mnt/two
mount /dev/foo /mnt/two; mount --bind /mnt/two /mnt/one
So the only way to remember what mounts were bind mounts is the log of
mount commands left in
/etc/mtab. A bind mount operation is indicated by the
bind mount option (which causes the filesystem type to be ignored). But
mount has no option to list only filesystems mounted with a particular set of sets of options. Therefore you need to do your own filtering.
mount | grep -E '[,(]bind[,)]'
</etc/mtab awk '$4 ~ /(^|,)bind(,|$)/'
One piece of information that is retained by the kernel, but not shown in
/proc/mounts, is when a mount point only shows a part of the directory tree on the mounted filesystem. In practice this mostly happens with bind mounts:
mount --bind /mnt/one/sub /mnt/partial
/proc/mounts, the entries for
/mnt/partial have the same device, the same filesystem type and the same options. The information that
/mnt/partial only shows the part of the filesystem that's rooted at
/sub is visible in the per-process mount point information in
/proc/$pid/mountinfo (column 4). Entries there look like this:
12 34 56:78 / /mnt/one rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered
12 34 56:78 /sub /mnt/partial rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered