올바른 명령 열거가 필요합니다 pdfjam *.pdf --nup 1x1
. 매뉴얼에는 아무것도 없기 pdfjam
때문에 pdfjoin
Bash 방법 및/또는 방법을 고려하고 있습니다 find
. 일부 중복을 생략한 올바른 열거가 없는 실패 출력의 예
ls -1 *
10 Heart Disorders.pdf
11 Red Blood Cell Disorders.pdf
...
19 Kidney Disorders.pdf
1 Cell Injury.pdf
20 Lower Urinary Tract and Male Reproductive Disorders.pdf
21 Female Reproductive Disorders and Breast Disorders.pdf
2 Inflammation and Repair.pdf
4 Water.pdf
5a Prematurity and intrauterine growth retardation.pdf
5 Genetic and Developmental Disorders.pdf
6 Environmental Pathology.pdf
...
9 Vascular Disorders.pdf
예상 출력
1
2
...
5
5a
...
10
11
...
20
21
5...
한 가지 과제는 및 의 존재입니다 5a...
.
운영 체제: 데비안 8.7
답변1
그리고 zsh
:
(LC_ALL=C; pdfjam ./*.pdf(n) --nup 1x1)
작동합니다. (n)
는zsh
글로벌 예선숫자 정렬에 사용됩니다. C 로케일에서는 공백이 앞에 정렬되고 "5a "
공백이 끝에 정렬됩니다. 일부 다른 로케일에서는 첫 번째 패스에서 공백과 대소문자가 무시되고 그 앞에 나타나기 때문에 먼저 정렬하는 것이 가능합니다."5 G"
a
"a "
" G"
A
G
다른 쉘과 GNU 또는 호환 시스템의 경우 다음을 수행할 수 있습니다.
printf '%s\0' ./* | LC_ALL=C sort -t/ -znk2 |
xargs -r0 sh -c 'pdfjam "$@" --nup 1x1' sh
파일 목록이 너무 크면 zsh
이 방법을 사용할 때 오류가 발생하여 여러 개를 실행하게 되는데 pdfjam
, 이는 원하는 결과가 아닐 수도 있고 눈치채지 못할 수도 있습니다.
LC_ALL=C
before before 공백이 정렬되도록 위의 방법을 사용하는 대신, 대안은 a
숫자로 정렬하지만 관계를 기준으로 정렬하고 첫 번째 필드에서만 어휘적으로 정렬하는 것입니다(로케일 규칙에 따라).
printf '%s\0' [0-9]* | sort -z -k1n -k1,1 |
xargs -r0 sh -c 'pdfjam "$@" --nup 1x1' sh
정렬 시 해당 로케일의 대소문자를 무시하는 경우 5a
이전 정렬이 허용됩니다. 하지만 그 전에는 여전히 정렬됩니다.5B
05a
5
bash
버전 4.4 이상 에서는 다음을 수행할 수도 있습니다.
readarray -td '' files < <(
printf '%s\0' [0-9]* | sort -z -k1n -k1,1)
pdfjam "${files[@]}" --nup 1x1