упорядочивание в bash "for" loop - PullRequest
4 голосов
/ 20 октября 2011

Есть ли способ контролировать сортировку, которая происходит, когда я запускаю a, для i in *;делать;echo $ i;сделанный;в моем каталоге.Кажется, всегда использовать сортировку ascii.В любом случае, чтобы сделать числовую сортировку?

Спасибо, Вивек

Ответы [ 4 ]

5 голосов
/ 20 октября 2011

Как насчет того, чтобы сделать ваши имена файлов такими, чтобы они естественным образом сортировались в виде чисел, то есть дополнялись начальными нулями. Вместо 1 .. 10 .. 100 используйте 001 ..010 .. 100?

Чтобы включить подкаталоги:

for i in $( ls -d * | sort -n ); do echo $i; done;

Чтобы исключить подкаталоги:

for i in $( ls | sort -n ); do echo $i; done;

Надеюсь, это поможет.

4 голосов
/ 20 октября 2011

Вы всегда можете использовать sort (1) и его числовую сортировку:

for i in $(ls -1 * | sort -n) ; do echo $i ; done
0 голосов
/ 21 октября 2011
for i in $(ls | sort -n) ; do echo $i ; done
0 голосов
/ 20 октября 2011

вы можете использовать порядок из ls [параметры сортировки], который вы задаете для каталога, т.е.

      for i in `ls -X` ; do
             echo $i
      done

сначала выполняется команда ls с определенной сортировкой, в примере сортировки по расширениюВы выдаете список с циклом for

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