Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Pdftk склеивание в умном порядке сортировки файлов  (Прочитано 1255 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ubu12.04ntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 103
    • Просмотр профиля
Может кто знает, как командой pdftk *.pdf output all.pdf склеить файлы doc1.pdf, doc2.pdf, doc11.pdf, doc22.pdf и т.д. именно в порядке "умной" сортировки имен, а не doc1.pdf,doc11.pdf, doc2.pdf и т.д.
Понято, можно префиксы поставить, переименовать файлы, но может есть другой способ?

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
pdftk $(ls *.pdf | sort -V | tr '\n' ' ') output all.pdf
« Последнее редактирование: 01 Февраля 2017, 01:01:43 от renzrv »

Оффлайн ubu12.04ntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 103
    • Просмотр профиля
А если этот кусок нужно поместить в bash-скрипт, как его синтаксис изменится?
Имею ввиду  сюда  find -type d | while read d; do pdftk "$d"/*.pdf cat output "$d"/newfile.pdf; done
« Последнее редактирование: 01 Февраля 2017, 01:11:51 от ubu12.04ntu »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Нет. Но если нужно для другой папки (не текущей), то так:
Код: (bash) [Выделить]
input_dir='/path/to/dir1'
output_dir='/path/to/dir2'
pdftk $(ls "$input_dir"/*.pdf | sort -V | tr '\n' ' ') cat output "${output_dir}/all.pdf"

Имею ввиду  сюда
Код: (bash) [Выделить]
find "$PWD" -type f -name '*.pdf' -printf '%h\n' \
| sort -u | while read d; do cd "$d" || continue; \
pdftk $(ls *.pdf | sort -V | tr '\n' ' ') cat output newfile.pdf; done
« Последнее редактирование: 01 Февраля 2017, 01:27:02 от renzrv »

Оффлайн ubu12.04ntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 103
    • Просмотр профиля
Огромное Вам спасибо!
Еще момент, в таком варианте что-то не срабатывает, т.е выполняется, но файла что-то нету
find -type d | while read d; do pdftk $(ls "$d"/*.pdf | sort -V | tr '\n' ' ') cat output output "/home/1111/${d##*/}.pdf"; done
« Последнее редактирование: 01 Февраля 2017, 01:31:59 от ubu12.04ntu »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Код: (bash) [Выделить]
find "$PWD" -type f -name '*.pdf' -printf '%h\n' \
| sort -u | while read d; do cd "$d" || continue; \
pdftk $(ls *.pdf | sort -V | tr '\n' ' ') cat output "/home/1111/${d##*/}.pdf"; done

Оффлайн ubu12.04ntu

  • Автор темы
  • Участник
  • *
  • Сообщений: 103
    • Просмотр профиля
Супер! Спасибо!!! Кучу времени мне сэкономили! Успехов!

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Bash рулит 8) И тебе тоже)

 

Страница сгенерирована за 0.039 секунд. Запросов: 25.