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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

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

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

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
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

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

Имею ввиду  сюда
Код: Bash
  1. find "$PWD" -type f -name '*.pdf' -printf '%h\n' \
  2. | sort -u | while read d; do cd "$d" || continue; \
  3. 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

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

Оффлайн ubu12.04ntu

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

Оффлайн ReNzRv

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

 

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