Как запустить команду для каждого номера в диапазоне

Я хочу сделать что-то вроде

specmd file5.awe specmd file6.awe specmd file7.awe specmd file8.awe specmd file9.awe specmd file10.awe specmd file11.awe specmd file12.awe 

Есть ли хороший способ сделать это? Лучший способ, о котором я могу думать, – это что-то вроде

 ruby -e "10.upto(15){|i| puts i}" | xargs -I {} specmd file{}.awe 

Который, очевидно, не очень хороший способ сделать это, поскольку он зависит от рубина и чувствует, что в этом случае рубин должен быть ненужным.

Примечание: есть больше файлов (например: file4.awe , file13.awe ), которые мне не нужны, поэтому любое подталкивание (возможно?) Не будет делать то, что я хочу.

6 Solutions collect form web for “Как запустить команду для каждого номера в диапазоне”

В bash вы можете создавать циклы, используя встроенную команду для итерации по диапазону:

 for i in {5..12} do specmd file${i}.awe done 

Есть больше вариантов для других подобных ситуаций, я оставлю здесь ссылку для этого.

http://www.cyberciti.biz/faq/bash-for-loop/

 for f in file[5-9].awe file1[012].awe do : stuff with "$f" files done 

… не все шары равны.

иначе вы можете сделать:

 x=4 while [ 13 -gt "$((x+=1))" ] do : stuff with "file$x.awe" done 

… который имеет преимущество генерации своего итератора во время итерации и работает по умолчанию практически в любой скриптовой оболочке (как и в случае с глобусами) .

С помощью zsh вы можете упростить команду с помощью специального цикла «loop»:

 n=5; m=12; repeat $((m-n+1)) specmd file$((n++)).awe 

Я знаю, что это старый вопрос, но я не мог сопротивляться.

Нет для цикла требуется, нет необходимости в цикле, просто чистая строка командной строки:

 echo file{5..12}.awe | xargs -n1 specmd 

Использование C-стиля для цикла в bash или ksh93 :

 for ((i=5;i<=12;++i)); do specmd "file$i.awe"; done 

Использование расширения скобки:

 for f in file{5..13}.awe; do specmd "$f"; done 

Или, с xargs , в том же виде, что и у вас:

 printf '%s\n' {5..13} | xargs -I {} specmd file{}.awe 

Больше альтернатив для zsh

 autoload zargs # best in ~/.zshrc zargs -n1 file{5..12}.awe -- specmd 

или:

 for f (file{5..12}.awe) specmd $f 
  • Перенаправить вывод всех команд в файл, а не только последний
  • Что более идиоматично в сценарии bash: `|| true` или `|| : `?
  • Терминалы GUI (?) Сброс $ SHELL
  • Команда «>» не работает только в встроенной Linux
  • Как решить эту «неоднозначную перенаправление»
  • Как избежать бесполезного использования кошки при анализе файла?
  • Две трубы для одной команды
  • Shell не указана в / etc / shells, когда она
  • Почему не работает dzen2 при вызове через?
  • rsync parallel vs последовательные передачи
  • Как я могу найти файл с фиксированной длиной имени, используя ls?
  • Linux и Unix - лучшая ОС в мире.