Перечислять файлы по порядку, а не по алфавиту? - PullRequest
3 голосов
/ 24 января 2012

По сути, у меня есть куча файлов с общим префиксом (logo%d.jpg).

Когда они просматриваются с помощью ls или даже при циклическом просмотре каталога в PHP, я не получаюих в числовом порядке, что означает logo1.jpg, logo2.jpg.

Вместо этого я получаю их в алфавитном порядке, например:

logo1.jpg, logo10.jpg, logo11.jpg ... logo 19.jpg, logo2.jpg (вместо logo20.jpg)

Есть ли способ вывести их в числовом порядке?logo1, logo2, logo3 .. etc.

Ответы [ 3 ]

8 голосов
/ 24 января 2012

Вы можете поместить их в массив и отсортировать массив с помощью функции natsort & shy; Документы :

$array = array('logo1','logo2','logo12');
natsort($array);

Что дает ( Демо ):

array(3) {
  [0]=>
  string(5) "logo1"
  [1]=>
  string(5) "logo2"
  [2]=>
  string(6) "logo12"
}

Заказ, который вы ищете, часто называют естественным заказом.

В качестве альтернативы, вы можете добавить префикс номера, например, если вы уже используете sprintf для именования файлов, чтобы стандартный порядок сортировки продолжал работать:

`logo%03d.jpg`

Что будет генерировать

logo001.jpg

для десятичного числа 1.

2 голосов
/ 24 января 2012

Загрузить в массив и использовать natsort ()

1 голос
/ 24 января 2012

Если вы используете ls, как вы говорите ...

ls | sort -n

добьется цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...