Сделать xargs в качестве первого параметра

Я пытаюсь создать такое поведение:

grep 192.168.1 *.txt 

Передавая строку в grep через Xargs, но она идет на конец, а не как первый параметр.

 echo 192.168.1 | xargs grep *.txt 

Мне нужно сказать xargs (или что-то подобное), чтобы поместить входящую строку между «grep» и «*», а не в конец.

Как мне это сделать?

2 Solutions collect form web for “Сделать xargs в качестве первого параметра”

 $ echo 192.168.1. | xargs -I{} grep {} *.txt 

пример

Примеры файлов:

 $ cat {1..3}.txt 192.168.1 192.168.1 192.168.1 

Пример выполнения:

 $ echo 192.168.1. | xargs -I{} grep {} *.txt 1.txt:192.168.1. 2.txt:192.168.1. 3.txt:192.168.1. 

Другой подход:

 find . -name \*.txt -print0 | xargs -0 grep 192.168.1 

Это не переполнит длину командной строки оболочки слишком большим количеством имен файлов. Чтобы избежать путаницы xargs / grep с именами файлов с пробелами, параметры -print0 и -0 будут определять каждое найденное имя с нулевым, а не LF.

  • grep для файлов и открыть итоговые совпадения
  • Не удалось создать большой файл tar с трубкой и xargs
  • GNU parallel vs & (я имею в виду фон) vs xargs -P
  • Найдите полный путь и имя файла под каталогом, затем перейдите в исполняемый файл в качестве аргументов
  • Копирование папки с помощью xargs
  • Почему эта труба не заканчивается, когда процесс las умирает (зомби)?
  • Команда xargs приводит к sed:;: Нет такого файла или каталога
  • Отправка списка вакансий в slurm
  • Исправлен последний аргумент с xargs
  • Что делает xargs, если он используется без каких-либо параметров?
  • Переменные ENV по отношению к петлям xargs
  • Linux и Unix - лучшая ОС в мире.