Come posso "diff" due file con Nautilus?

16

Ho installato Meld e ho scoperto che è un ottimo strumento di confronto. Sfortunatamente non c'è integrazione con Nautilus 3.2. Ciò significa che non posso fare clic destro sui file e selezionare un'opzione per aprirli in Meld per il confronto.

Ho visto nel commento degli strumenti che lo strumento necessita del pacchetto diff-ext da installare. Questo pacchetto è stato rimosso dall'universo di Ubuntu, sto indovinando perché gtk 3.0. Anche se ho scaricato manualmente dalla sorgente forgia il pacchetto diff-ext , quando provo a configurarlo il controllo fallisce con il messaggio:

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, da questo output deduco che in effetti gtk 2 è richiesto per installare l'estensione diff su nautilus.

Ora, la mia domanda è: c'è la possibilità di integrare Meld in Nautilus? O ci sono altri strumenti basati sulla diff che si integrano con il Nautilus attuale? Quindi basato su gtk3.

Sto usando Ubuntu 11.10 se ci sono stati dei dubbi fino ad ora.

    
posta bioShark 11.03.2012 - 23:11

4 risposte

20

C'è un'utile estensione python che incorpora Meld in Nautilus

come installare

Ottieni il codice sorgente o il pacchetto deb dal sito web degli autori .

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

Cerca pyextension in Dash ed esegui PyExtension Nautilus .

Attivare l'estensione di fusione (installarlo se richiesto) e fare clic sull'opzione di riavvio della barra degli strumenti Nautilus.

Errore GConf

Se trovi un errore relativo a GConf quando provi ad aprire Nautilus PyExtension, installa "gobject-introspection" e "gir1.2-gconf-2.0":

sudo apt-get install gobject-introspection
sudo apt-get install gir1.2-gconf-2.0
    
risposta data fossfreedom 12.03.2012 - 00:18
11

Puoi anche installare il pacchetto di confronto nautilus, disponibile (a partire da Ubuntu 12.04) dai repository di pacchetti standard di Ubuntu - esegui quanto segue da un terminale:

sudo apt-get install nautilus-compare

Fornisce opzioni di menu nautilus per confronti a 2 e 3 vie. Meld è usato di default, ma è possibile utilizzare qualsiasi applicazione diff definita dall'utente.

Un vantaggio significativo di questa soluzione è che si possono confrontare file o cartelle situati in directory diverse (ad esempio /home/user/a/b/c/file.txt e /home/user/d/e/f/otherfile.txt possono essere aperti in diverse finestre Nautilus e confrontati l'uno con l'altro).

    
risposta data Mark 31.10.2012 - 17:59
3

Script Nautilus

Un'alternativa più semplice ed efficiente all'installazione di un'estensione dedicata potrebbe utilizzare uno script Nautilus come il seguente:

#!/bin/bash
meld "[email protected]"

Istruzioni per l'installazione: Come posso installare uno script Nautilus?

    
risposta data Glutanimate 18.09.2013 - 15:06
2

Uso di Nautilus per confrontare il file negli appunti contenenti testo

Questa risposta è utilizzata principalmente per confrontare un file con il testo negli appunti che è stato copiato da Internet. Il testo degli appunti potrebbe essere stato copiato da un altro file sul tuo sistema, rendendo questa una risposta valida.

Le differenze tra file sono evidenziate usando il comando diff nativo di bash e poi visualizzate usando gedit . Tuttavia, questo può essere modificato in meld o in qualsiasi altro pacchetto di terze parti.

Questa risposta utilizza la funzione incorporata di Nautilus per eseguire uno script personalizzato dopo aver selezionato un file:

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

NOTA: Ho sviluppato questo script Nautilus un paio di settimane fa e intendevo postarlo come nuovo Q & amp; A, ma sono stato premuto per un po 'di tempo e non ero sicuro se qualcuno fosse davvero tutto ciò interessato a esso.

Esempio di output

In questo esempio stiamo confrontando lo script effettivo pubblicato qui in UA prima del 31 marzo 2017 alla versione rivista il 31 marzo 2017. Notate come sono state configurate nuove informazioni e messaggi di errore.

Il comando diff è molto potente e come tale ha una miriade di parametri di controllo. Digita man diff nel terminale per le pagine di manuale o info diff per ulteriori dettagli sull'utilizzo dei comandi.

    
risposta data WinEunuuchs2Unix 25.03.2017 - 19:27

Leggi altre domande sui tag