正しいコマンドの列挙が必要です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...
。
オペレーティングシステム:Debian 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