2014-02-11 2 views
0

Может ли кто-нибудь помочь мне разобраться в следующем однострочном пространстве?Назначение дубликатов xargs в этом однострочном поле

find | xargs grep 'patt' -sl | xargs -L1 sed 's/patt/repl/g' 

почему два xargs существует и почему это не может быть объединено, и люди страница xargs -L говорит:

-L max-lines: Use at most max-lines nonblank input lines per command line. Trailing blanks cause an input line to be logically continued on the next input line. Implies -x 

Что я не в состоянии интерпретировать.

ответ

1

Первый xargs использует параметр -l для grep, что позволяет печатать только имена файлов, которые соответствуют шаблону. Таким образом, это принимает в качестве входных данных все файлы, которые перечислены find, и фильтрует его на файлы, содержащие шаблон.

Второй xargs пробегает sed над каждым из этих файлов, чтобы заменить шаблон заменой.

+0

Какова цель ** xargs -L1 **? –

+1

Он запускает команду один раз для каждого имени файла, вместо того, чтобы добавлять все имена файлов в одну командную строку. Я не знаю, почему программист сделал это, нет никаких оснований для запуска новой команды 'sed' для каждого файла. – Barmar