Jika Anda memiliki 2-3 file pdf besar (atau epub atau format lain, baca di bawah) untuk dibandingkan, maka dimungkinkan untuk menggabungkan kekuatan:
kaliber (untuk mengonversi sumber Anda ke teks)
berbaur (untuk mencari perbedaan antara file teks) secara visual
paralel (untuk menggunakan semua inti sistem Anda untuk mempercepat)
Skrip di bawah ini menerima sebagai input format file berikut: MOBI, LIT, RRC, EPUB, ODT, HTML, CBR, CBZ, RTF, TXT, PDF dan LRS.
Jika tidak diinstal, instal meld, kaliber dan paralel:
#install packages
sudo apt-get -y install meld calibre parallel
Untuk dapat mengeksekusi kode dari mana saja di komputer Anda, simpan kode berikut dalam file bernama "diffepub" (tanpa ekstensi) di dalam direktori "/ usr / local / bin".
usage="
*** usage:
diffepub - compare text in two files. Valid format for input files are:
MOBI, LIT, PRC, EPUB, ODT, HTML, CBR, CBZ, RTF, TXT, PDF and LRS.
diffepub -h | FILE1 FILE2
-h print this message
Example:
diffepub my_file1.pdf my_file2.pdf
diffepub my_file1.epub my_file2.epub
v0.2 (added parallel and 3 files processing)
"
#parse command line options
while getopts "h" OPTIONS ; do
case ${OPTIONS} in
h|-help) echo "${usage}"; exit;;
esac
done
shift $(($OPTIND - 1))
#check if first 2 command line arguments are files
if [ -z "$1" ] || [ -z "$2" ] || [ ! -f "$1" ] || [ ! -f "$2" ]
then
echo "ERROR: input files do not exist."
echo
echo "$usage"
exit
fi
#create temporary files (first & last 10 characters of
# input files w/o extension)
file1=`basename "$1" | sed -r -e '
s/\..*$// #strip file extension
s/(^.{1,10}).*(.{10})/\1__\2/ #take first-last 10 chars
s/$/_XXX.txt/ #add tmp file extension
'`
TMPFILE1=$(mktemp --tmpdir "$file1")
file2=`basename "$2" | sed -r -e '
s/\..*$// #strip file extension
s/(^.{1,10}).*(.{10})/\1__\2/ #take first-last 10 chars
s/$/_XXX.txt/ #add tmp file extension
'`
TMPFILE2=$(mktemp --tmpdir "$file2")
if [ "$#" -gt 2 ]
then
file3=`basename "$3" | sed -r -e '
s/\..*$// #strip file extension
s/(^.{1,10}).*(.{10})/\1__\2/ #take first-last 10 chars
s/$/_XXX.txt/ #add tmp file extension
'`
TMPFILE3=$(mktemp --tmpdir "$file3")
fi
#convert to txt and compare using meld
doit(){ #to solve __space__ between filenames and parallel
ebook-convert $1
}
export -f doit
if [ "$#" -gt 2 ]
then
(parallel doit ::: "$1 $TMPFILE1" \
"$2 $TMPFILE2" \
"$3 $TMPFILE3" ) &&
(meld "$TMPFILE1" "$TMPFILE2" "$TMPFILE3")
else
(parallel doit ::: "$1 $TMPFILE1" \
"$2 $TMPFILE2" ) &&
(meld "$TMPFILE1" "$TMPFILE2")
fi
Pastikan pemiliknya adalah pengguna Anda dan memiliki izin eksekusi:
sudo chown $USER:$USER /usr/local/bin/diffepub
sudo chmod 700 /usr/local/bin/diffepub
Untuk mengujinya, cukup ketik:
diffepub FILE1 FILE2
Saya mengujinya untuk membandingkan 2 revisi dari +1600 halaman pdf dan berfungsi sempurna. Karena kaliber ditulis menggunakan python untuk portabilitas, butuh 10 menit untuk mengonversi kedua file menjadi teks. Lambat, tapi bisa diandalkan.