Как получить текущий счет строки из xargs?

Я хочу захватить каждые 5 изображений в каталоге и объединить их в новый файл с уникальным именем файла на 5 групп изображений.

find *.jpg | xargs -n 5 -i convert {} -append {#}.png 

Это действительно близко, но {#} не выводит текущий счет строки. Возможно ли это с помощью xargs?

3 Solutions collect form web for “Как получить текущий счет строки из xargs?”

Если имена файлов не содержат пробелов:

Пробный прогон:

 find *.jpg | xargs -n 5 | awk '{OFS=" ";}{print "convert",$1,$2,$3,$4,$5,"-append",NR".png\n";}' 

Если все выглядит нормально, добавьте | sh | sh .

С zsh :

 set -- ./**/*.jpg(N.) n=0 while (($# >= 5)) { convert $@[1,5] -append $((++n)).png shift 5 } 

Это должно работать с любыми символами в именах файлов, а список файлов сортируется. Скрытые файлы и каталоги игнорируются.

Рад, что вы можете сделать это parallel . Если вы все еще хотите использовать xargs, вы можете добавить echo в команду xargs, чтобы просто напечатать команду, а затем обработать вывод с помощью awk, чтобы заменить последнее слово подходящим подсчитанным именем файла (с ведущими 0 для удобства перечисления) :

 find . -name '*.jpg' | xargs -n 5 -i echo convert {} -append {#}.png | awk '{ $NF = sprintf("%04d.png", i); i++; print }' | bash 

(Вам повезло, мои xargs не позволяют мне смешивать -i и -n). Это не будет работать, если у вас есть пробелы в именах файлов. Я использовал find . -name find . -name если у вас слишком много файлов, а *.jpg слишком велико для расширения. (add -maxdepth 1 если вы не хотите входить в поддиры).

Так что, возможно, проще сделать все это в awk:

 find . -maxdepth 1 -name '*.jpg' | awk '{ files = files " " $1 } NR%5 == 0 { printf("convert %s -append %04d.png\n",files,i); i++; files="" } END { if(files!="")printf("convert %s -append %04d.png\n",files,i) } ' | bash 

Часть END обрабатывает случаи, когда в конце не существует нескольких файлов.

  • Как я могу создать файл, который я получил из stdin без xargs
  • Использование функции, определенной в родительском скрипте
  • Как подключить вывод поиска к другому вызову find
  • опция xargs -I
  • Выполнение нескольких команд с помощью xargs
  • Xargs во вторую сторону трубы?
  • Как открыть несколько файлов из `find`?
  • копирование подкаталогов, не содержащих определенный файл, в другой каталог
  • Каков синтаксис для передачи вывода команды в xargs?
  • xargs как поместить результат {} в $ (cmd {})?
  • find: несколько `-exec` с условиями
  • Interesting Posts

    SSH-соединение сразу же закрывается после входа в систему

    Как отобразить данные сертификата TLS сервера в терминале?

    «Каталог исходного кода ядра Linux», запрошенный в Cisco VPN client install

    Есть ли макет программы, которая использует процессор на нескольких ядрах?

    Создание и форматирование exFAT-раздела из Linux

    Почему программа SGID не может читать файл из той же группы, если она используется другим пользователем?

    Сенсорный экран не реагирует на 4.4-rc7, но работает на 4.2. cat / dev / hidraw0 ничего не показывает

    Способы оптимизации производительности в трубопроводах по сети (RSH и SSH)

    Для чего используются TTY> 12?

    Почему бы не отобразить символы, которые я напечатал в tty?

    Что вызывает этот зеленый фон в ls-выходе?

    Как автоматически запускать и выключать машины VirtualBox?

    Установить разрешение видео при загрузке?

    dd'ing SDD, уменьшение скорости записи

    Есть ли аргумент dpkg для предупреждения о несовместимостях / нарушениях?

    Linux и Unix - лучшая ОС в мире.