Comment «différencier» deux fichiers avec Nautilus?


16

J'ai installé Meld et découvert que c'est un excellent outil de comparaison. Malheureusement, il n'y a pas d'intégration avec Nautilus 3.2. Cela signifie que je ne peux pas cliquer avec le bouton droit sur les fichiers et sélectionner une option pour les ouvrir dans Meld à des fins de comparaison.

J'ai vu dans le commentaire des outils que l'outil a besoin du package diff-ext pour être installé. Ce paquet a été supprimé de l'univers Ubuntu, je suppose parce que gtk 3.0. Même si j'ai téléchargé manuellement depuis la source forge le package diff-ext , lorsque j'essaye de le configurer, la vérification échoue avec le message:

checking for DIFF_EXT... configure: error: Package requirements (libnautilus-extension >= 2.14.0 gconf-2.0 >= 2.14.0 gnome-vfs-module-2.0 >= 2.14) were not met:

No package 'libnautilus-extension' found
No package 'gconf-2.0' found
No package 'gnome-vfs-module-2.0' found

Ok, donc à partir de cette sortie, je suppose qu'effectivement gtk 2 est requis pour installer l'extension diff à nautilus.

Maintenant, ma question est: Y a-t-il une possibilité d'intégrer Meld dans Nautilus? Ou, existe-t-il un autre outil basé sur diff qui s'intègre avec Nautilus actuel? Donc basé sur GTK3.

J'utilise Ubuntu 11.10 en cas de doute jusqu'à présent.

Réponses:


20

Il existe une extension python utile qui intègre Meld dans Nautilus

entrez la description de l'image ici

entrez la description de l'image ici

comment installer

Obtenez la source ou le package deb sur le site Web des auteurs .

wget http://www.giuspen.com/software/nautilus-pyextensions_3.4.1-1_all.deb

sudo apt-get install python-nautilus
sudo dpkg -i nautilus-pyextensions_3.4.1-1_all.deb

Recherchez pyextension dans Dash et exécutez Nautilus PyExtension .

Activez l'extension de fusion (installez-la si demandé) et cliquez sur l'option de redémarrage de la barre d'outils Nautilus.

Erreur GConf

Si vous rencontrez une erreur liée à GConf lorsque vous essayez d'ouvrir Nautilus PyExtension, installez "gobject-introspection" et "gir1.2-gconf-2.0":

sudo apt-get install gobject-introspection
sudo apt-get install gir1.2-gconf-2.0

Merci, ce travail est formidable. De plus, merci d'avoir pris le temps de faire les captures d'écran et de faire la description d'installation rapide. Toujours bon d'obtenir des réponses de votre part.
bioShark

meldest super-duper génial. Excellent conseil d'intégration.
belacqua

11

Vous pouvez également installer le package nautilus-compare, disponible (à partir d'Ubuntu 12.04) à partir des référentiels de packages Ubuntu standard - exécutez ce qui suit à partir d'un terminal:

sudo apt-get install nautilus-compare

Cela fournit des options de menu nautilus pour les comparaisons à 2 et 3 voies. Meld est utilisé par défaut, mais toute application de diff définie par l'utilisateur peut être utilisée.

Un avantage significatif de cette solution est que l'on peut comparer des fichiers ou des dossiers situés dans différents répertoires (par exemple /home/user/a/b/c/file.txtet /home/user/d/e/f/otherfile.txtpeuvent être ouverts dans différentes fenêtres Nautilus, et comparés les uns aux autres).


3

Script Nautilus

Une alternative plus simple et plus efficace à l'installation d'une extension dédiée serait d'utiliser un script Nautilus comme le suivant:

#!/bin/bash
meld "$@"

Instructions d'installation: comment installer un script Nautilus?


C'est facilement la meilleure solution. Il évite d'installer encore d'autres paquets et les frais généraux associés. Merci, @Glutanimate.
u2n le

2

Utilisation de Nautilus pour comparer un fichier au presse-papiers contenant du texte

Cette réponse est principalement utilisée pour comparer un fichier au texte du presse-papiers qui a été copié à partir d'Internet. Le texte du presse-papiers aurait cependant pu être copié à partir d'un autre fichier de votre système, ce qui en fait une réponse éligible.

Les différences de fichiers sont mises en évidence à l'aide de la diffcommande native de bash, puis affichées à l'aide de gedit. meldCependant, cela peut être modifié ou tout autre package tiers.

Cette réponse utilise la fonction intégrée de Nautilus pour exécuter un script personnalisé après avoir sélectionné un fichier:

#!/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

REMARQUE: j'ai développé ce script Nautilus il y a quelques semaines et je voulais le publier en tant que nouveau Q&A, mais j'ai été pressé par le temps et je ne savais pas si quelqu'un serait vraiment intéressé par cela.

Exemple de sortie

clipboard-diff 1

Dans cet exemple, nous comparons le script réel publié ici dans AU avant le 31 mars 2017 à la version révisée le 31 mars 2017. Remarquez comment les nouvelles informations et les messages d'erreur ont été configurés.

La diffcommande est très puissante et possède donc une myriade de paramètres de contrôle. Tapez man diffle terminal pour les pages de manuel ou info diffpour plus de détails sur l'utilisation des commandes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.