Сортировка файлов по порядку номеров

300
ahmelq

У меня есть несколько изображений в формате TIFF, упорядоченных от 1 до 246. Я преобразовал их в файл PDF, используя imagemagick с convert *.tif out.pdf. Однако порядок страниц в файле PDF отличается; (например, страница 2 - это изображение 10 и т. д.). Когда я запускаю dirили lsполучаю неупорядоченные файлы, подобные следующим:

21/06/2018 16:15 <DIR> . 21/06/2018 16:15 <DIR> .. 21/06/2018 15:51 2.056 1.tif 21/06/2018 15:51 98.710 10.tif 21/06/2018 15:51 96.492 100.tif 21/06/2018 15:51 44.064 101.tif 21/06/2018 15:51 70.960 102.tif 21/06/2018 15:51 85.254 103.tif 21/06/2018 15:51 92.750 104.tif 21/06/2018 15:51 87.672 105.tif 21/06/2018 15:51 90.284 106.tif 21/06/2018 15:51 79.532 107.tif 21/06/2018 15:51 85.956 108.tif 21/06/2018 15:51 22.452 109.tif 21/06/2018 15:51 91.796 11.tif (...) 

Что я хочу:

21/06/2018 16:15 <DIR> . 21/06/2018 16:15 <DIR> .. 21/06/2018 15:51 2.056 1.tif 21/06/2018 15:51 98.710 2.tif 21/06/2018 15:51 96.492 3.tif 21/06/2018 15:51 44.064 4.tif 21/06/2018 15:51 70.960 5.tif 21/06/2018 15:51 85.254 6.tif 21/06/2018 15:51 92.750 7.tif 21/06/2018 15:51 87.672 8.tif 21/06/2018 15:51 90.284 9.tif 21/06/2018 15:51 98.710 10.tif 21/06/2018 15:51 91.796 11.tif (...) 

Как я могу отсортировать файлы в числовом порядке?

0
Они * находятся * в алфавитном порядке. Вы хотите их в числовом порядке. TRiG 5 лет назад 1
@TRiG Да, как я могу это сделать? ahmelq 5 лет назад 0
Понятия не имею, так как я не использую Windows. Но вы можете [отредактировать] свой вопрос, чтобы задать правильный вопрос. TRiG 5 лет назад 0
Вам необходимо переименовать файлы в трехзначное имя. Например, `1.tif` будет` 001.tif`. В этом случае файлы будут автоматически в порядке. Sandeep 5 лет назад 0
Есть один ответ, но он использует бесплатное программное обеспечение: [TCC / LE] (https://jpsoft.com/products/tcc-le.html) - улучшенная замена `cmd`. Есть много улучшений, одним из которых является то, что по умолчанию `dir 'сортируется в нужном вам порядке. Я использую его всякий раз, когда работаю в Windows, и он реализует многие функции оболочки Linux, но в соответствии с синтаксисом `cmd`. AFH 5 лет назад 0
@AFH Вы были правы, команда сортировки Windows не выполняет сортировку, как ожидалось, и моего небольшого примера подмножества файлов, которые я использовал изначально, было недостаточно, как только я добавил `~ 2.txt` и` ~ 15.txt` все было в шоке .... ха Pimp Juice IT 5 лет назад 0
Другой вариант - использовать технику @ Sandeep, но избегать постобработки, заставляя ImageMagick создавать файлы, начиная с `101.tif`, делая буквенную и числовую сортировку идентичными (до` 999.tif` - не проблема, поскольку у вас есть 254). файлы). Какую команду вы использовали для создания ваших файлов? AFH 5 лет назад 0

2 ответа на вопрос

3
Gerard H. Pille

Тебе не нужна какая-то мощная оболочка? Как, например:

$D = get-childitem $B = foreach ($F in $D) { "" -f $F.Name } $B | sort 

производство:

PS C:\temp\test> c:\temp\numdir.ps1 1.txt 2.txt 10.txt 100.txt 
3
Sandeep

Используйте следующий пакетный файл, чтобы переименовать файлы, используя трехзначное имя. Затем вы можете использовать порядок сортировки окон по умолчанию, чтобы сделать ваш PDF-файл правильным.

@echo off setlocal enableextensions enabledelayedexpansion for %%f in (*.tif) do ( set FileName=%%~nf set FileName=00!FileName! set FileName=!FileName:~-3! set FileName=!FileName!%%~xf ren "%%f" "!FileName!" ) 

При выполнении вышеуказанного командного файла имя файла будет изменено на 001.tif, 002.tif, 020.tif... etc. imagemagickбудет использовать порядок сортировки по умолчанию и создаст правильный PDF.

Похожие вопросы