Jika saya memiliki file-file ini di direktori
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
bagaimana saya bisa mendaftar mereka di Bash sehingga mereka dalam urutan numerik naik berdasarkan bagian nomor dari string. Jadi pesanan yang dihasilkan adalah cwcch1.pdf, cwcch2.pdf, ..., cwcch9.pdf, cwcch10.pdf
, dll.
Apa yang akhirnya saya coba lakukan adalah menggabungkan pdf pdftk
dengan sesuatu seperti berikut ini
pdftk `ls *.pdf | sort -n` cat output output.pdf
tapi itu tidak berhasil karena pengurutan saya salah.
Jawaban:
Sesuatu seperti ini mungkin melakukan apa yang Anda inginkan, meskipun dibutuhkan pendekatan yang sedikit berbeda:
sumber
Anda
sort
mungkin memiliki kemampuan untuk melakukan ini untuk Anda:sumber
-V, --version-sort natural sort of (version) numbers within text
Untuk contoh khusus ini Anda juga bisa melakukan ini:
Yaitu, urutkan secara numerik (-n) pada bidang kedua (-k2) menggunakan 'h' sebagai pemisah bidang (-th).
sumber
Anda dapat menggunakan
-v
opsi dalam GNUls
: semacam sortir (versi) angka dalam teks.Ini tidak bekerja dengan BSD
ls
(misalnya pada OS X), di mana-v
opsi memiliki arti yang berbeda.sumber
Gunakan ekspansi shell secara langsung di commandline. Perluasan harus memesannya dengan benar. Jika saya memahami
pdftk
sintaks baris perintah dengan benar, ini akan melakukan apa yang Anda inginkan:Atau Anda dapat mencoba pendekatan yang berbeda. Ketika saya perlu melakukan sesuatu seperti ini, saya biasanya mencoba untuk mendapatkan nomor saya diformat dengan benar sebelumnya. Jika saya datang terlambat dan PDF sudah diberi nomor seperti contoh Anda, saya akan menggunakan ini untuk memberi nomor baru:
Sekarang
ls
penyortiran standar akan berfungsi dengan baik.sumber
pdftk cwcch{{1..9},{10..18}}.pdf ...
bash
ekstensi?Berikut metode yang hanya menggunakan sortir:
sumber
Sortir -g digunakan untuk mengurutkan angka dalam urutan menaik.
Satu liner berikut ini mengulangi file dengan nama file PDF dan mengambil angka hanya dengan egrep -o dan menggunakan sort -g untuk mengurutkan angka dalam urutan menaik . Kemudian ia memberi makan angka-angka ini ke sed dan colokkan mereka. Kemudian rids output duplikat dengan uniq.
Di tempat uniq, Anda juga dapat menggunakan awk:
Di atas setara dengan uniq.
Apa yang Anda cari adalah liner satu ini :
Isi tmp:
EDIT:
Output dari perintah:
sumber
tmp
file? Adakah keluaran untuk ditempel ke dalam jawaban?