Rar является общей утилитой для операций, таких как это, поскольку это доступно на обеих платформах.
Однако другой подход должен использовать split
.
split -b 1024m -d somefile somefile.
Затем используйте 7zip на машине Windows, чтобы повторно объединить файлы.
Rar имеет преимущество того, чтобы быть немного более простым, но требует, чтобы он был установлен на обеих машинах. Разделение имеет преимущество его являющийся быстрее, поскольку это не должно помещать данные в архив, но оставляет его, как.
В зависимости от Вашей среды можно использовать ls -v
с GNU coreutils, например:
gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
-sOutputFile=out.pdf $(ls -v)
Или если Вы находитесь на последних версиях FreeBSD или OpenBSD:
gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
-sOutputFile=out.pdf $(ls | sort -V)
Еще раз спецификаторы шарика zsh приходят на помощь.
echo *.pdf(n)
Если нет никаких разрывов, следующее могло бы оказаться полезным (хотя поверхностный и не устойчивые касающиеся пограничные случаи и общность) - только для понимания:
FILES="c0.pdf"
for i in $(seq 1 20); do FILES="${FILES} c${i}.pdf"; done
gs [...args...] $FILES
Если могут быть разрывы, некоторые [ -f c${i}.pdf ]
проверка могла быть добавлена.
Редактирование также видит этот ответ, согласно которому Вы могли (использование Bash) использование
gs [..args..] c{1..20}.pdf
"$FILES"
и "$i"
) если у Вас нет серьезного основания не к, и Вы уверены, что знаете то, что Вы делаете. (В отличие от этого, в то время как фигурные скобки могут быть важными, они не так важны как кавычки, так, например, "c$i.pdf"
достаточно хорошо.) команда как gs [
…args…
] $FILES
, где $FILES
содержит разделенный пробелом список файлов, может походить на серьезное основание использовать $FILES
не заключая его в кавычки (потому что "$FILES"
не будет работать в том контексте). … (Cont’d)
– G-Man Says 'Reinstate Monica'
04.10.2016, 23:19
FILES=("c0.pdf")
и FILES+=("c$i.pdf")
); также этот ответ, который использует технику, которую я предлагаю.
– G-Man Says 'Reinstate Monica'
04.10.2016, 23:27
Если все файлы, о которых идет речь, имеют одинаковый префикс
(т. Е. Текст перед номером; c
в данном случае), вы можно использовать
gs …args… c?.pdf c??.pdf
c? .pdf
расширяется до c0.pdf
c1.pdf
… c9.pdf
.
c ??. Pdf
расширяется до c10.pdf
c11.pdf
… c20.pdf
(и до c99.pdf
, если применимо).
В то время как каждое слово командной строки, содержащее символ (символы) раскрытия имени
, расширяется до списка имен файлов, отсортированных (упорядоченных) в соответствии с
с LC_COLLATE
переменная,
списки, полученные в результате расширения соседних подстановочных знаков (globs)
, не объединяются; они просто связаны.
(Мне кажется, я припоминаю, что когда-то это явно говорилось на странице руководства оболочки,
, но сейчас я не могу его найти.)
Конечно, если файлы могут подняться до c999.pdf
,
следует использовать c? .pdf c ??. pdf c ???. pdf
.
По общему признанию, это может стать утомительным, если у вас много цифр.
Вы можете немного сократить его; например, для (до) пяти цифр
вы можете использовать c? {,? {,? {,? {,?}}}}. pdf
.
Если список имен файлов невелик
(например, есть c0.pdf
и c12345.pdf
,
но нет обязательно каждое число между ними),
вам, вероятно, следует установить параметр nullglob
.
В противном случае, если (например) у вас нет файлов с двузначными числами,
вы получите буквальный аргумент c ??. Pdf
, переданный вашей программе.
Если у вас несколько префиксов
(например, a <номер> .pdf
,
b <номер> .pdf
,
и c <номер> .pdf
,
с номерами из одной или двух цифр), {{ 1}} вы можете использовать очевидный метод грубой силы:
a?.pdf a??.pdf b?.pdf b??.pdf c?.pdf c??.pdf
или свернуть его в {a, b, c}? {,?}. Pdf
.
Просто цитирую и исправляю ответ Тора... НИКОГДА не анализируйте ls!
Вы можете использовать sort -V
(расширение не-POSIX для сортировки):
printf '%s\0' ./* | sort -zV \
| xargs -0 gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH \
-sDEVICE=pdfwrite -sOutputFile=out.pdf
(для некоторых команд, видимо для gs есть такая команда, вам нужно "./ " вместо ""... если один не работает, попробуйте другой)
ls -v
будетnatural sort of (version) numbers within text
таким образом, это может использоваться также... – Sundeep 03.10.2016, 15:21-V
функцияsort
не указан POSIX также. Однако это, кажется, распространилось дальше, например, и FreeBSD и OpenBSDsort
поддерживайте его. – Thor 03.10.2016, 17:25ls
используемый я проверил, если это имело опцию отдельно вместо того, чтобы передать по каналу к виду :) – Sundeep 03.10.2016, 17:30