Если у меня есть эти файлы в каталоге
cwcch10.pdf
cwcch11.pdf
cwcch12.pdf
cwcch13.pdf
cwcch14.pdf
cwcch15.pdf
cwcch16.pdf
cwcch17.pdf
cwcch18.pdf
cwcch1.pdf
cwcch2.pdf
cwcch3.pdf
cwcch4.pdf
cwcch5.pdf
cwcch6.pdf
cwcch7.pdf
cwcch8.pdf
cwcch9.pdf
как я могу перечислить их в Bash так, чтобы они были в возрастающем числовом порядке на основе части числа строки. Таким образом, получающийся порядок cwcch1.pdf, cwcch2.pdf, ..., cwcch9.pdf, cwcch10.pdf
, и т.д.
То, что я в конечном счете пытаюсь сделать, связывают pdfs с pdftk
с чем-то как следующее
pdftk `ls *.pdf | sort -n` cat output output.pdf
но это не работает, поскольку моя сортировка является неправильной.
Ваш sort
может иметь способность сделать это для Вас:
sort --version-sort
Используйте расширение оболочки непосредственно в командной строке. Расширение должно заказать им правильно. Если я понимаю pdftk
синтаксис командной строки правильно, это сделает то, что Вы хотите:
# shell expansion with square brackets
pdftk cwcch[1-9].pdf cwcch1[0-9].pdf cat output output.pdf
# shell expansion with curly braces
pdftk cwcch{{1..9},{10..18}}.pdf cat output output.pdf
Или можно попробовать другой подход. Когда я должен сделать что-то вроде этого, я обычно пытаюсь отформатировать свои числа правильно заранее. Если я войду в него поздно, и PDFs уже пронумерованы как Ваш пример, то я буду использовать это для изменения нумерации:
# rename is rename.pl aka prename -- perl rename script
# this adds a leading zero to single-digit numbers
rename 's/(\d)/0$1/' cwcch[1-9].pdf
Теперь стандарт ls
сортировка будет работать правильно.