Оказывается, эта функция еще не доступна в HUD во время запроса этого вопроса. Функциональность была предложена в качестве ошибки на Launchpad здесь: https://bugs.launchpad.net/unity/+bug/921546
Ошибка была подтверждена, и исправлено исправление, чтобы эта функциональность отображалась внутри HUD в будущем обновлении.
Сценарий ниже должен выполнять эту работу. Он использует evince-thumbnailer, который, насколько мне известно, поставляется с каждой установкой gnome и является миниатюром по умолчанию. Сохранить как pdfthumbnailer.sh и сделать его исполняемым. Использование: pdfthumbnailer.sh dir1 [dir2, ...]
#!/bin/bash
F1=$HOME/.thumbnails/normal
F2=$HOME/.cache/thumbnails/normal
SAVE_FOLDER=$F1
[ -e $F2 ] && SAVE_FOLDER=$F2
# the thumbnailing function
evincethumb() {
outname=$(echo -n "$(readlink -f "$0")" | \
perl -MURI::file -MDigest::MD5=md5_hex -ne 'print md5_hex(URI::file->new($_));')
# no work if thumbnail already present
[ ! -e $SAVE_FOLDER/${outname}.png ] && {
echo "$0"
#uncomment only one of both thumbnailers
#convert -thumbnail 128x128 "$0"[0] $SAVE_FOLDER/${outname}.png 2>/dev/null
evince-thumbnailer -s 128 "$0" $SAVE_FOLDER/${outname}.png 2>/dev/null
}
}
# make our function visible to the subshell in "find -exec" below
export -f evincethumb
# loop through all given folders
for folder in "$@" ; do
find "$folder" -type f -exec bash -c evincethumb {} \;
done
Сохранить как :
не добавляет атрибуты Thumb :: URI и Thumb :: MTime к эскизам, как указано Джеймс Хенстридж. До сих пор я не видел никаких доказательств того, что по умолчанию evince-thumbnailer это делает. Другими словами, пока nautilus не восстанавливает миниатюры, сценарий может использоваться для задания.Примечания:
не добавляет Thumb :: URI и Thumb :: MTime атрибуты к эскизам, как указал Джеймс Хенстридж. До сих пор я не видел никаких доказательств того, что по умолчанию evince-thumbnailer это делает. Другими словами, если nautilus не восстанавливает миниатюры, сценарий может использоваться для задания. speed: 37 pdf-файлов, протестированных как с evince-thumbnailer, так и с convert (от imagemagick): 3 секунды для [ f8] и 14 секунд для convert. генерирует миниатюры, распознанные именами пути nautilus, обрабатываемые URL-адресом perl: файловый модуль (пробелы и другие символы правильно переведены в файл uri) нуждается в perl, присутствующем в установочных файлах по умолчанию, необработанном с помощью evince-thumbnailer, просто выдает ошибку - отключен с помощью 2>/dev/null, посмотрите на строку MimeType в /usr/share/thumbnailers/evince.thumbnailer, чтобы просмотреть список обработанных типов файлов: начиная с 12.04 папка с эскизами кажется ~/.cache/thumbnails. Более надежные пути с использованием readlink.Примечания : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683394
На какое-то время отвлекся, и rosch избил меня к ней :) Не знал evince-thumbnailer (я не пользователь Gnome), но в любом случае, так как я уже написал это, вот оно. Для этого нужно установить, установить и установить imagemagick, если нет:
which convert || sudo apt-get install imagemagick
Сохранить как mkthumb.sh (например), chmod +x mkthumb.sh и выполнить его с абсолютными путями в качестве аргументов (вы можете использовать - s в качестве своего первого параметра, чтобы пропустить генерируемые миниатюры, которые уже существуют):
user@host $ ./mkthumb.sh -s /home/user/Downloads /home/user/blah
Processing directory /home/user/Downloads/pics/
OK /home/user/Downloads/pics/FeO08.jpg
OK /home/user/Downloads/pics/UrOCu.jpg
OK /home/user/Downloads/pics/34ATZ.gif
OK /home/user/Downloads/pics/WBRE3.jpg
OK /home/user/Downloads/pics/LjLdH.jpg
OK /home/user/Downloads/pics/xvvae (1).jpg
SKIP /home/user/Downloads/pics/itcrowd.jpg
OK /home/user/Downloads/pics/76180344.jpg
OK /home/user/Downloads/pics/fgk5N.jpg
....
Сценарий (я немного изменил его, чтобы поддерживать большинство изображений, вы можете добавить дополнительные расширения, если они вам понадобятся):
#!/bin/bash
# USAGE: mkthumb.sh [-s] <abs_path> [abs_path]
# create nautilus thumbnails for images and PDFs in the directories (and their
# sub-directories) given as parameters.
# -s is used to skip generating thumbnails that already exist
skip_existing=0
if [[ "${1}" == "-s" ]]; then
skip_existing=1
shift
fi
mkthumb() {
file="${1}"
dest="${2}"
convert -thumbnail 128x128 "${file}[0]" "${dest}" &>/dev/null
if (( $? == 0 )); then
echo "OK ${file}"
else
echo "FAIL ${file}"
fi
}
OLDIFS="${IFS}"
IFS=$'\n'
for dir in $@; do
realdir=`realpath "${dir}"`
echo "Processing directory ${realdir}"
for file in $(find "${realdir}" -regextype posix-egrep -iregex \
'.*\.(pdf|png|jpg|gif|jpeg)'); do
md5=$(echo -n "${file}" | perl -MURI::file -MDigest::MD5=md5_hex -ne \
'print md5_hex(URI::file->new($_));')
dest="${HOME}/.thumbnails/normal/${md5}.png"
if [[ -f "${dest}" ]]; then
if [[ "${skip_existing}" == "0" ]]; then
mkthumb "${file}" "${dest}"
else
echo "SKIP ${file}"
fi
else
mkthumb "${file}" "${dest}"
fi
done
done
IFS="${OLDIFS}"
Он обрабатывает файлы с пробелами в своих именах без проблем.
A bit of testing here:
user@host $ find .thumbnails/
.thumbnails/
.thumbnails/fail
.thumbnails/fail/gnome-thumbnail-factory
.thumbnails/normal
# ok - no thumbnails present.
user@host $ ./mkthumb.sh -s /home/user/Downloads/pdf/test/
Processing directory /home/user/Downloads/pdf/test/
OK /home/user/Downloads/pdf/test/800pdf.pdf
OK /home/user/Downloads/pdf/test/3_TO_pricelist.pdf
OK /home/user/Downloads/pdf/test/111011-speisekarte-mit-desserts.pdf
OK /home/user/Downloads/pdf/test/1186157_r4f3a355eb104a (1).pdf
user@host $ touch tstamp
user@host $ ./mkthumb.sh -s /home/user/Downloads/pdf/test/
Processing directory /home/user/Downloads/pdf/test/
SKIP /home/user/Downloads/pdf/test/800pdf.pdf
SKIP /home/user/Downloads/pdf/test/3_TO_pricelist.pdf
SKIP /home/user/Downloads/pdf/test/111011-speisekarte-mit-desserts.pdf
SKIP /home/user/Downloads/pdf/test/1186157_r4f3a355eb104a (1).pdf
# running nautilus once now to see if it generates new thumbnails
# checking for new thumbnails:
user@host $ find .thumbnails/ -newer tstamp
# None.
Спецификация миниатюр включает в себя общие репозитории эскизов, которые позволяют распределять предварительно генерируемые эскизы вместе с связанными файлами, а не каждый пользователь создавать собственные миниатюры. Поэтому теоретически вы можете создавать эскизы, а затем добавлять их в общий репозиторий, тем самым устраняя необходимость генерации их в будущем, если вы очистите каталог миниатюр или переместите их на другую машину или что-то еще.
http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY
Эта страница Ask Ubuntu появляется в результатах поиска, когда я пытался выяснить, если любое приложение поддерживает общие репозитории эскизов. К сожалению, кажется, что ни одно приложение не поддерживает их.