скопируйте рекурсивно кроме скрытого каталога

Не ясно, что Вы подразумеваете "под качественной потерей". Это могло означать много разных вещей. Вы могли отправить некоторые образцы для иллюстрирования? Возможно, сократите тот же раздел из версий низкого качества и хорошего качества (как PNG для предотвращения дальнейшей качественной потери).

Возможно, необходимо использовать -density сделать преобразование на уровне более высоких точек на дюйм:

convert -density 300 file.pdf page_%04d.jpg

(Можно предварительно ожидать -units PixelsPerInch или -units PixelsPerCentimeter при необходимости. Мои значения по умолчанию копии к пкс/дюйм)

Обновление: Поскольку Вы указали, gscan2pdf (способ, которым Вы используете его) просто обертка для pdfimages (от poppler). pdfimages не делает того же самого это convert делает при предоставлении PDF как вход.

convert берет PDF, представляет его в некотором разрешении и использует полученное растровое изображение в качестве исходного изображения.

pdfimages просматривает PDF для встроенных растровых изображений и экспортирует каждого в файл. Это просто игнорирует любой текст или векторные команды рисования в PDF.

В результате, если то, что Вы имеете, является PDF, это - просто обертка вокруг серии битовых массивов, pdfimages сделает намного лучшее задание извлечения их, потому что это получает Вас необработанные данные в его первоначальном размере. Вы, вероятно, также хотите использовать -j опция к pdfimages, потому что PDF может содержать необработанные данные JPEG. По умолчанию, pdfimages преобразовывает все в формат PNM и преобразование JPEG> PPM>, JPEG является процессом с потерями.

Так, попробуйте

pdfimages -j file.pdf page

Вы можете или, возможно, не должны следовать за этим с a convert кому: .jpg шаг (в зависимости от того, что растровый формат PDF использовал).

Я попробовал эту команду на PDF, который я сделал сам из последовательности изображений JPEG. Извлеченные JPEGs были байтом для байта, идентичным исходным изображениям. Вы не можете получить более высокое качество, чем это.

13
23.09.2010, 17:37
3 ответа

Вы могли просто скопировать все с

cp -rf 

и затем удалите скрытые каталоги в месте назначения с

find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf

С другой стороны, если у Вас есть некоторый усовершенствованный tar (например, tar GNU), Вы могли бы попытаться использовать tar для исключения некоторых шаблонов. Но я боюсь, что это не возможно только исключить скрытые каталоги, но включать скрытые файлы.

Например, что-то вроде этого:

tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x

Btw, tar GNU имеет зоопарк, исключают параметры стиля. Мой фаворит

--exclude-vcs
6
27.01.2020, 19:52

Хорошие варианты для копирования дерева каталогов за исключением некоторых файлов:

  • rsync: это - в основном CP плюс тонна возможностей исключения.

    rsync -a --exclude='.*' /source/ /destination
    
  • мир: это имеет некоторые возможности исключения, и это находится в POSIX, так должно быть доступным везде (за исключением того, что некоторые дистрибутивы Linux не включают его в свою стандартную установку по некоторым причинам).

    cd /source && mkdir -p /destination && \
    pax -rw -pp -s '!.*/\..*!!'  . /destination
    
30
27.01.2020, 19:52

альтернативно к cp Вы могли использовать rsync с --exclude=PATTERN.

8
27.01.2020, 19:52

Теги

Похожие вопросы