Usando o Nautilus para comparar o arquivo com a área de transferência que contém texto
Esta resposta é usada principalmente para comparar um arquivo com o texto na área de transferência que foi copiada da Internet. O texto da área de transferência pode ter sido copiado de outro arquivo no seu sistema - tornando esta uma resposta elegível.
As diferenças de arquivo são destacadas usando o diffcomando nativo do bash e depois exibidas usando gedit. Isso pode ser modificado para meldou para qualquer outro pacote de terceiros.
Esta resposta usa a função interna do Nautilus para executar um script personalizado após selecionar um arquivo:
#!/bin/bash
# NAME: clipboard-diff
# PATH: $HOME/.local/share/nautilus/scripts
# DESC: Find differences bewteen selected file on disk and clipboard.
# CALL: Called from Nautilus file manager.
# DATE: March 18, 2017. Modified: March 31, 2017.
# NOTE: The clipboard would contain text highlighted on website and copied
# with <ctrl>+<C>. Requires command `xclip` to be installed.
# Must have the xclip package. On Ubuntu 16.04, not installed by default
command -v xclip >/dev/null 2>&1 || { zenity --error --text "Install xclip using: 'sudo apt install xclip' to use this script. Aborting."; exit 99; }
# strip new line char passed by Nautilus
FILENAME=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed -e 's/\r//g')
# Multiple files can't be selected.
LINE_COUNT=$(wc -l <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
LINE_COUNT=$((LINE_COUNT-1))
if [[ $LINE_COUNT > 1 ]] ; then
zenity --error --text "Ony one file can be selected at a time! "
exit 1
fi
# Object type must be "file..." (ie no directories, etc.)
if [ -d "${FILENAME}" ] ; then
zenity --error --text "$FILENAME is a directory!";
exit 1
else
if [ -f "${FILENAME}" ]; then
: # Bash noop
else
zenity --error --text "${FILENAME} is not a file!";
exit 2
fi
fi
# Get clipboard contents into working file
workfile="/tmp/clipboard-work-"$(date +%s)
xclip -o > $workfile
# Create temporary file name so two or more open instances won't clash
differences="/tmp/clipboard-diff-"$(date +%s)
# Compare file differences
# -q brief -B ignore blank lines, -u only differences
diff --unified=2 -w -b -B -I --suppress-blank-empty \
--suppress-common-lines --ignore-all-space \
${FILENAME} $workfile > $differences
# If file doesn't exist, errors in diff parameters
# If file size =0 there were no differences
if [[ -f $differences ]] ; then
if [[ -s $differences ]] ; then
# File not empty.
gedit $differences
else
zenity --info --text "$workfile matches $differences"
fi
else
zenity --error --text "cliboard-diff - error in diff parameters."
fi
# clean up /tmp directory
rm $workfile
rm $differences
exit 0
OBSERVAÇÃO: desenvolvi esse script do Nautilus há algumas semanas e pretendo postá-lo como uma nova sessão de perguntas e respostas, mas tenho pressionado o tempo e não tinha certeza se alguém realmente estaria interessado nisso.
Saída de amostra

Neste exemplo, estamos comparando o script real publicado aqui na AU antes de 31 de março de 2017 com a versão revisada em 31 de março de 2017. Observe como novas informações e mensagens de erro foram configuradas.
O diffcomando é muito poderoso e, como tal, possui uma infinidade de parâmetros de controle. Digite man diffo terminal para as páginas de manual ou info diffpara obter mais detalhes de uso de comandos.