I do not yet have a solution to read a swapfile in readonly mode, but I can offer now a full-featured solution based on the code given in my first answer.
NOTES to the code that follows.
The code is written as a bash script one-liner as I use it (before I begin a working session, I write by a script the collection into the bash history list to have it handy).
For usage:
Type into the first assignment a regex to specify the file for which the swapfile is to be searched in the whole system.
“Whole system” means “all processes currently running.”
When no file is found, it means that this file is not open in any Vim instance.
In the first part of the output all instances of Vim that have the specified file open are listed.
The matching string is colored.
In the tty-column one can see in which terminal this Vim instance is running, _e.g., "pts/12".
In the second part of the output the dir-listings are printed of all directories that contain a swapfile of the given file (if that file is open in an instance of Vim).
The basenames of the file, and maybe of its backups, and of the swapfile are colored.
The filename extenstion of the swapfile, e.g., ".sw..." are highlighted but not colored.
{ WEx_grep_its_PCRE_regex_to_specify_file="we_regex_of_filename"; ps -ww -o f -o stat -o euid -o euser -o ruid -o ruser -o pid -o ppid -o sess -o cls -o pri -o wchan=WIDE-WCHAN-COLUMN -o lstart -o time -o tname -o args --sort=start_time -p $(pgrep -d " " vim) | grep --color=always -P $WEx_grep_its_PCRE_regex_to_specify_file"; echo ""; ( shopt -s lastpipe; set +m; ps -ww -o args -p $(pgrep -d " " vim) | grep -P $WEx_grep_its_PCRE_regex_to_specify_file" | xargs -IX /bin/bash -c 'WEx="$0"; echo ""; echo "WEx: ~$WEx"; [[ "$WEx" =~ /media/.*$ ]]; WE_retcod=$?; echo "WE_retcod: ~$WE_retcod~"; WEy="${BASH_REMATCH[0]}"; echo "WEy: ~$WEy~"; WEzdir="$(dirname "$WEy")"; echo "WEzdir: ~$WEzdir~"; WEzbas="$(basename "$WEy")"; echo "WEzbas: ~$WEzbas~"; ls -la --time-style=long-iso -t "$WEzdir" | grep --color=always -P "^|$WEzbas"' X; ); } | less -R +/{ WEx_grep_its_PCRE_regex_to_specify_file="we_code_to"; ps -ww -o f -o stat -o euid -o euser -o ruid -o ruser -o pid -o ppid -o sess -o cls -o pri -o wchan=WIDE-WCHAN-COLUMN -o lstart -o time -o tname -o args --sort=start_time -p $(pgrep -d " " vim) | grep --color=always -P "$WEx_grep_its_PCRE_regex_to_specify_file"; echo ""; ( shopt -s lastpipe; set +m; ps -ww -o args -p $(pgrep -d " " vim) | grep -P "$WEx_grep_its_PCRE_regex_to_specify_file" | xargs -IX /bin/bash -c 'WEx="$0"; echo ""; echo "WEx: ~$WEx"; [[ "$WEx" =~ /media/.*$ ]]; WE_retcod=$?; echo "WE_retcod: ~$WE_retcod~"; WEy="${BASH_REMATCH[0]}"; echo "WEy: ~$WEy~"; WEzdir="$(dirname "$WEy")"; echo "WEzdir: ~$WEzdir~"; WEzbas="$(basename "$WEy")"; echo "WEzbas: ~$WEzbas~"; ls -la --time-style=long-iso -t "$WEzdir" | grep --color=always -P "^|$WEzbas"' X; ); } | less -R +/CTRL-K"\.sw";